原理:一串数,从第二个数开始,把之前比该数大的数向后移,把该数放到比它小的数值之前,对每一个数值操作都已经把之前的数值排好序了。因此只要该数大于它的前一个数值,就不需要排序了。
代码:
void insert_sort(int a[],int n)//a[n]储存要排序的数值,n为数量
{
int i,j,temp; //i,j用来循环,temp保存当前数值
for(i=1;i<n;i++)//遍历每一个数值
{
temp=a[i];//保存当前数值
j=i-1;
if(temp<a[j])
{
for(j;j>=0 && temp<a[j];j--)//查找当前数值之前有没有比当前数值大的数值
{
a[j+1]=a[j];//有的话,把大的数值向后移
}
a[j+1]=temp;//把当前数值放到比它小的数值之前
}
}
}