首页 > 代码库 > 基础排序算法···插入排序
基础排序算法···插入排序
嗯。。先让我想一想。。这是要说直接插入排序,这是一种最简单的排序方式,它的基本操作就是把一个操作记录插入到已经排好序的队列中。
这个排序方式很好理解,所以代码也不是很复杂。
先说个当时书上的案例,一组记录: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"); } }
在这里有一个哨兵的概念,哨兵起监视的作用,避免数组下标越界。其他的就很好理解了。总的来说这个比较好理解,就少说些。
基础排序算法···插入排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。