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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基础排序算法···插入排序相关的知识,希望对你有一定的参考价值。

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

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

先说个当时书上的案例,一组记录: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");
   }
 }

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

以上是关于基础排序算法···插入排序的主要内容,如果未能解决你的问题,请参考以下文章

·排序

莫队算法&#183;初探总结

学时总结 ◆学时 · 一◆ A*算法

《Linux基础》04. 用户管理 · 用户组 · 相关文件 · 权限管理

前端总结·基础篇·CSS

学堂笔记···进化计算