电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

数据结构第23讲_插入排序2和交换排序_CVIP免费

数据结构第23讲_插入排序2和交换排序_C_第1页
1/26
数据结构第23讲_插入排序2和交换排序_C_第2页
2/26
数据结构第23讲_插入排序2和交换排序_C_第3页
3/26
10.2插入排序直接插入排序折半插入排序2-路插入排序表插入排序希尔排序4.表插入排序1)基本思想通过改变排序过程中采用的存储结构,减少在排序过程中进行“移动”记录的操作。利用静态链表进行排序,并在排序完成之后,一次性地调整各个记录相互之间的位置,即将每个记录都调整到它们所应该在的位置上。#defineMAXSIZE100//静态链表容量Typedefstruct{RcdTyperc;//记录项intnext;//指针项}SLNode;//表结点类型Typedefstruct{SLNoder[MAXSIZE+1];//0号单元为表头结点intlength;//链表当前长度}SLinkListType;//静态链表类型2)待排记录序列的存储结构3)具体做法首先将静态链表中数组下标为“1”的分量(结点)和表头结点构成一个循环链表,然后依次将下标为“2”至“n”的分量(结点)按记录关键字非递减有序插入到循环链表中。初始状态012345678MAXINT493865977613274910-------i=3012345678MAXINT4938659776132749201------key域next域i=2012345678MAXINT493865977613274910-------38123650i=4012345678MAXINT49386597761327492310-----9740i=5012345678MAXINT493865977613274923140----i=6012345678MAXINT4938659776132749231504---i=7012345678MAXINT49386597761327496315042--i=8012345678MAXINT493865977613274963150472-76451362277249384)表插入排序性能分析从表插入排序的过程可见,表插入排序的基本操作仍是将一个记录插入到已排好序的有序表当中。和直接插排序相比,不同之处仅是以修改2n次指针值代替移动记录,排序过程中所需进行的关键字间的比较次数相同。因此表插入排序的时间复杂度仍是O(n2)。4)表插入排序性能分析表插入排序的结果只是求得一个有序链表,则只能对它进行顺序查找,不能进行随机查找,为了能实现有序表的折半查找,尚需对记录进行重新排列。5.希尔排序1)基本思想又称为“缩小增量排序”。先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序(接近最好情况,效率很高),因此希尔排序在时间效率上比前两种方法有较大提高。312345665499725251321234562525136549971123456132525654997123456132525496597增量3增量2增量1希尔排序过程voidShellInsert(SqList&L,intdk){//一趟希尔插入排序。本算法对直接插入算法作了以下修改://1.前后记录位置的增量是dk,而不是1;//2.L.r[0]只是暂存单元,不是哨兵。当j<=0时,插入位置已找到for(i=dk+1;i<=L.length;++i)if(L.r[i].key0&&(L.r[0].key

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

数据结构第23讲_插入排序2和交换排序_C

确认删除?
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群