介绍
这里介绍直接插入排序(Straight Insertion Sort),其基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。
即我们可以假设一开始第一个数是有序表,后面的都是无序的,插入排序的任务就是把后面的无序表一个个插入到前面来。
顾名思义,从名称上也可以知道它是一种插入排序的方法。我们来看直接插入排序法的代码。
代码
//辅助函数:交换两个变量
void swap(int*a,int*p)
{
int temp = *a;
*a = *p;
*p = temp;
}
//插入排序
//从第1个数开始,往后开始遍历,第i个数一定要放到使得前i个数都变成有序的。
void insertSort(int* arr,int len)
{
int i,j;
for(i=0;i<len;i++)
{
for(j=i;j>0;j--)
{
if(arr[j]<arr[j-1])
{
swap(&arr[j],&arr[j-1]);
}else
{
//已经不比那个元素小了就提前退出
break;
}
}
}
}