码迷,mamicode.com
首页 > 编程语言 > 详细

基础排序算法···插入排序

时间:2017-03-18 22:41:51      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:中间   简单   lis   log   接下来   list   插入排序   代码   监视   

嗯。。先让我想一想。。这是要说直接插入排序,这是一种最简单的排序方式,它的基本操作就是把一个操作记录插入到已经排好序的队列中。

这个排序方式很好理解,所以代码也不是很复杂。

先说个当时书上的案例,一组记录:49,38,65,97,76,13,27。。。假设在排序过程中,已经有一个含4个记录的有序数列,

即:38,49,65,97.。接下来就是直接插入排序,这时需要考虑的是76,此时直接插入排序的做法是顺序查找找到合适的位置,

即将76插入到65---97中间,从而得到了一个新的有序数列:38,49,65,76,97.。这里给出代码:

 void InsertSort(SqList &L)
 {
   int i,j;
   for(i=2;i<=L.length;++i)
     if LT(L.r[i].key,L.r[i-1].key)
     {
       L.r[0]=L.r[i];         //哨兵
       for(j=i-1;LT(L.r[0].key,L.r[j].key);--j)
         L.r[j+1]=L.r[j];    //记录后移
       L.r[j+1]=L.r[0];     //插入
     }
     printf("(%d,%d)",L.r[i].key,L.r[i].otherinfo);
   printf("\n");
   }
 }

在这里有一个哨兵的概念,哨兵起监视的作用,避免数组下标越界。其他的就很好理解了。总的来说这个比较好理解,就少说些。

基础排序算法···插入排序

标签:中间   简单   lis   log   接下来   list   插入排序   代码   监视   

原文地址:http://www.cnblogs.com/zzmher/p/6576305.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!