直接插入排序_C语言
当我们在记忆直接插入排序的时候,首先在脑海里有一个动态的图像 :arr[i]不断和arr[i-1]进行比较,只要每一次待比较的值比它前面那一位值小的话,就可以进行内层循环了。
所以需要留意的地方就是每一次的直接插入循环或者希尔循环,都是用arr[i]和它之前的那一位进行比较。
void insertsort(int arr[],int length)
{
int i,j;
for(i=1;i<length;i++)
{
int temp=arr[i];
if(arr[i]<arr[i-1])
{
for(j=i-1;j>=0 && arr[j]>temp;j--)
{
arr[j+1]=arr[j];
}
arr[j+1]=temp;
}
}
}
int main()
{
int arr[9]={3,5,23,66,88,2,33,44,55};
insertsort(arr,9);
int i;
for(i=0;i<9;i++)
printf(" %d ",arr[i]);
}