using System;
namespace 插入排序
{
class Program
{
static void Main(string[] args)
{
int[] arr = { 30, 12, 56, 78, 12125, 56, 44, 212, 45, 787, 21, 22, 56, 65 };
InsertSort(arr);
foreach (int item in arr)
Console.WriteLine(item);
Console.ReadKey();
}
private static void InsertSort(int[] arr)
{
for (int i = 1; i < arr.Length; i++)
{
int insertVal = arr[i];
int insertIndex = i - 1;
while (insertIndex >= 0 && insertVal < arr[insertIndex])
{
arr[insertIndex + 1] = arr[insertIndex];
insertIndex--;
}
arr[insertIndex + 1] = insertVal;
}
}
}
}
思路:从a[1]开始遍历,当前数开始判断,如果当前数大于前一个数,则直接插入,如果当前数小于前一个数,则让前一个数后移,并继续执行上述判断,直到找到一个比他小的前一个数,然后插入。