C语言算法--插入排序

来源:互联网 发布:淘宝抢单神器软件 编辑:程序博客网 时间:2024/05/18 09:04
/*-----------------------------** For    排序算法学习* IDE    DEV-CPP4.9.2* Auhtor  Czp* Date   2012/10/17*------------------------------*/#include <stdlib.h>#include <stdio.h>//插入排序void insertSort(int* arr,size_t n)      {           int i,j,key;      for(i=1;i<n;i++)                      //初始:ar={169,45,2,489,469,4,-778,156}      {                                              key = arr[i];                           j=i-1;          while(j>=0&&arr[j]>key)          //把key与前面的arr[0~j]进行比较                    arr[j+1] = arr[j--];     //找到一个比key大的数就把它后移           arr[j+1]=key;                    //上面的循环终止,则j+1就key的位置        }        /*      *Loop0:169,45,2,489,469,4,-778,156  数组原型  取key=arr[2]=2       *Loop1:2,169,45,489,469,4,-778,156  key=2比arr[1] arr[0]小,找到arr[2]的位置arr[0]->      *Lopp3:2,169,45,469,489,4,-778,156  进行插入和ArrayList的insert(value,index)一样       *Loop4:2,169,45,469,489,4,-778,156  .......      *Loop5:2,4,169,45,469,489,-778,156  ...      *Loop6:-778,2,4,169,45,469,489,156  ...      *Loop7:-778,2,4,156,169,45,469,489  ...      */}  int main(int argc, char *argv[]) {     int arr[] = {169,45,2,489,469,4,-778,156};     size_t len = (sizeof arr/sizeof arr[0]);     insertSort(arr,len);     int i;     for(i=0;i<len;i++)     {         printf("%d ,",arr[i]);                    }     //====>-778,2,4,156,169,45,469,489     getchar();     return 0; }

原创粉丝点击