插入排序是一种简单的插入排序法,其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。
在我们实际玩扑克牌时,其实就用的是插入排序
原理很简单,就如下:
话不多说,附代码:
void insertSort(int* a,int n)
{
//外层循环控制end,最开始从0开始,即temp为1,排前两个元素,以此类推
for (int i = 0; i < n - 1; i++)
{
int end = i;
int temp = a[end + 1];
while (end >= 0)
{
//判断end位置的元素是否大于end+1的位置,如果大于,就让end+1的位置等于end的位置,然后--end,让他继续往前走
if (a[end] > temp)
{
a[end + 1] = a[end];
end--;
}
else
{
break;
}
}
//要将end+1位置的值给还原到end位置上去,因为end--了所以是a[end+1]=temp
a[end + 1] = temp;
}
}