C语言算法--插入排序

/*-----------------------------
*
* 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;
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值