c#实现冒泡、快速、选择和插入排序算法
2009-04-11 08:25:12 来源:WEB开发网4.插入排序
using System;
namespace InsertSorter
{
/// <summary>
/// 插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,
/// 在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),
/// 因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位, 为最新元素提供插入空间。
/// </summary>
public class InsertSort
{
public static void Sort(int[] numArr)
{
for (int i = 1; i < numArr.Length; i++) //i从1开始
{
int t = numArr[i]; //标志当前未排序数据
int j = i;
while ((j > 0) && (numArr[j - 1] > t))
{
numArr[j] = numArr[j - 1];
j--;
}
numArr[j] = t; //在已排序序列中插入当前值
}
}
}
public class Program
{
static void Main(string[] args)
{
int[] arr = new int[] { 20, 41, 27, 14, 16, 1, 8, 55, 9, 35, 22, 14 };
InsertSort.Sort(arr);
Console.WriteLine("Numbers after insertsort:");
foreach (int i in arr)
{
Console.WriteLine(i);
}
Console.Read();
}
}
}
虽然在实际的项目中,我们的确很少用到这些或其他更高级的算法,但是”算法是程序的灵魂“。虽然算法确实很难,但是”当你用它们巧妙地解决问题的时候,那种纯粹的喜悦和快乐是任何不曾体验过的人所能感受到的“。很不幸,我还没有体验几次这样的快乐。
更多精彩
赞助商链接