(由于本文参考多篇文章,无法注明转载出处, 因此没有标准转载,特此说明)
插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。
插入排序方法分直接插入排序和折半插入排序两种,这里只介绍直接插入排序。
演示了对4个元素进行直接插入排序的过程,共需要(a),(b),(c)三次插入。
static void insertion_sort(int[] unsorted)
{
for (int i = 1; i < unsorted.Length; i++)
{
if (unsorted[i - 1] > unsorted[i]) //判断前面的元素是否比要插入的元素大
{
int temp = unsorted[i];
int j = i;
//因为前面的都是有序的,因此要挨个比较,并且要挨个移动
while (j > 0 && unsorted[j - 1] > temp)
{
unsorted[j] = unsorted[j - 1];
j--;
}
unsorted[j] = temp;
}
}
}
static void Main(string[] args)
{
int[] x = { 6, 2, 4, 1, 5, 9 };
insertion_sort(x);
foreach (var item in x)
{
if (item > 0)
Console.WriteLine(item + ",");
}
Console.ReadLine();
}
参考:http://images.cnblogs.com/cnblogs_com/kkun/201111/201111231433304812.png
void insertion_sort (int a[], int n) {
int i,j,v;
for (i=1; i<n; i++) {
//如果第i个元素小于第j个,则第j个向后移动
for (v=a[i], j=i-1; j>=0&&v<a[j]; j--)
a[j+1]=a[j];
a[j+1]=v;
}
}