今天复习了一下数据结构的插入排序,下面是算法和自己的一些理解
void charu(int *a,int length)
{
int i,j,t;
for( i=1;i<length;i++)//将第一个数子看为有序的数组,从第二个数开始依次插入
{
t=a[i];//将要插入的数记录下来,防止前面的数后移而丢失
if(a[i]<a[i-1])//判断下一个要插入的数是否大于它的前一个数,如果大于的话,则不必执行for循环,因为前面的都已有序
{
for( j=i-1;t<a[j];j--)//让数组下标指向要插入数(t)的前一个数,如果前一个数逆序(即前一个数比要插入的数大),则让前一个数后移一位,数组下标继续向前,直到退出循环,此时的话,前一个数小于要插入的数,后一个数大于要插入的数,此时的位置便是要插入的位置
{
a[j+1]=a[j];//数组后移
}
a[j+1]=t;//将t插入要插入的位置,因为最后一部j已经减1,所以j+1才是要插入的位置
}
}
}