posts - 63, comments - 37, trackbacks - 0, articles - 0
  IT博客 :: 首页 :: 新随笔 :: 联系 ::  :: 管理

插入排序算法描述

Posted on 2006-06-13 21:17 Enjoy Life 阅读(343) 评论(0)  编辑 收藏 引用 所属分类: DS study
void InsertionSort(Elem R[], int n){
  //对记录序列R[1...n]做直接插入排序
   for(i=2; i<=n; ++i){//一个数肯定是有序的

        //后一个数比前一个数小才需要进行插入,否则不用移动数字就可以
      if(R[i].key < R[i-1].key){
         R[0] = R[i]; //哨兵
         
         //找到R[i]该插入的位置,同时把R[i]大的数字都往后移一位,留出一个位置用于放R[i],该循环完成之后,位置找到,并且,后移也随之完成
         for(j=i-1; R[0].key<R[j].key; --j)
            R[j+1]=R[j];
         //再空的位置放上R[0]
         R[j+1]=R[0];
      }
      
   }
}
只有注册用户登录后才能发表评论。