vlambda博客
学习文章列表

直接插入排序_C语言

当我们在记忆直接插入排序的时候,首先在脑海里有一个动态的图像 :arr[i]不断和arr[i-1]进行比较,只要每一次待比较的值比它前面那一位值小的话,就可以进行内层循环了。


所以需要留意的地方就是每一次的直接插入循环或者希尔循环,都是用arr[i]和它之前的那一位进行比较。


#include <stdio.h>
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]); }