插入排序的思想:循环遍历每一个待排序元素,每次将待排序元素插入到有序的数列中。
C#实现:
/// <summary>
/// 插入排序
/// </summary>
/// <param name="source">待排序的数列</param>
private void insertSort(int[] source)
{
//循环数列,其中soure[i]为待排序的元素
for(int i=1;i<source.Length;i++)
{
int position = 0; //临时变量,记录soure[i]的插入位置
int j = i-1;
int key = source[i]; //保存关键字
//寻找soure[i]的插入位置
while (j >= 0)
{
if (key > source[j])
{
break;
}
j--;
}
position = j + 1; //此时得到soure[i]的插入位置
int k = i;
//移动插入位置之后的元素
while(k>position)
{
source[k] = source[k-1];
k--;
}
//将关键字放在插入位置
source[position] = key;
}
}