直接插入排序,简单点说就是是指在已排序好的序列中相应的位置插入需要排序的元素。
比如某个有序序列为:{1,4,5,7},现在需要将3插入到序列中,我们只需要从序列的末尾(升序中最大的元素)开始寻找正确的插入位置。
第一步:7>3,所以3应该插到7前面,而在C#语言程序中,我们可以先把7放到当前3的位置(腾出一个空位)
第二步:5>3,所以3也该在5的前面,位移当时7已移到之前3的位置,所以5可以移动到7原来的位置。
第三步:4>3,同理4移动到原理5的位置。
第四步:1<3,所以3应该在1的后面,而移动前的4是在1后面,所以把3插入到4的位置。这样就可以得到序列{1,3,4,5,7}了。
这里给出C#的实现代码:
public static void InsertionSort(int[] a)
{
if (a.Length < 2)
{
return;
}
for (int i = 0; i < a.Length - 1; i++)
{
int j = i + 1;
int temp = a[j];
for (; j >0; j--)
{
if (a[j - 1] > temp)
{
a[j] = a[j - 1];
}
else
{
break;
}
}
a[j ] = temp;
}
}
若有更高质量的代码或者需要改正的地方,请您指出,笔者会认真改正,感谢。