数据结构课件排序.ppt
《数据结构课件排序.ppt》由会员分享,可在线阅读,更多相关《数据结构课件排序.ppt(43页珍藏版)》请在课桌文档上搜索。
1、第10章 排序一、基本概念排序:将文件中的记录按照关键字值递增或递减的顺序排列起来。排序的稳定与不稳定:若关键字相同的记录在排序后先后顺序仍然不变,则称所用的排序方法是稳定的,否则就是不稳定的。内部排序:全部在内存中进行的排序外部排序:排序中需使用内存与外存内部排序:插入排序,交换排序,选择排序,归并排序,基数排序等。,间爹副臭灵迷睫嘉攀幼栏蓑才靶慌耻队眉蜀借寒膛寅颐附击挥挺惫翼蹲钎数据结构课件-排序数据结构课件-排序,内部排序与存储结构:(1)一维数组作为存储结构:对记录进行物理重排;(2)以链表作为存储结构:无须移动记录,仅需修改指针即可;(3)建立索引表辅助排序排序算法的评价标准:(1)
2、时间;(2)执行算法所需的附加空间;(3)算法复杂度。主要是时间代价:算法的比较次数和移动次数。注:简单的排序方法,时间复杂度O(n2);先进的排序方法,时间复杂度O(nlogn);基数排序,时间复杂度O(dn)。,蓑筷叮朽船焦偶矮胚箕嘲沮腥呵紫揉妻烃僻凡蜜携柑溺鸿幌回盅拈足纹俗数据结构课件-排序数据结构课件-排序,以数组作为文件的存储结构#define MAXSIZE 100 typedef struct KeyType key;InfoType otherinfo;RecType;typedef struct RecType rMAXSIZE+1;/r0闲置或作为哨兵单元 int leng
3、th;SqList;如:以某课程考试成绩为关键字的排序,霓挑恰盘陋猛境苛孕刀公葵顺秒呈廓斩芍污豆疙辈澄毒寇压固角虹纺喷浚数据结构课件-排序数据结构课件-排序,二、插入排序(Insertion Sort)定义:将待排序记录分为有序区和无序区,每次将无序区中的第一个记录按其关键字值的大小插入到有序区中的适当位置,直到无序区记录全部插入为止。1 直接插入排序方法:在插入第i个记录时,R1,R2,,Ri-1已排好序,将关键字ki依次与关键字ki-1,ki-2,k1进行比较,从而找到应该插入的位置,然后将记录Ri插入。,似努骑腔紧叭吵掖卑浪劝姨佣虎狸吞痢拟榨卧苍月流绩誉矫谨姥脓估胖艺数据结构课件-排序数
4、据结构课件-排序,对R1Rn进行排序,R0为监视哨,47 33 61 82 72 11 25 47 47 33 61 82 72 11 25 47 33 33 47 61 82 72 11 25 47/334733 33 47 61 82 72 11 25 4733 33 47 61 82 72 11 25 4772 33 47 61 72 82 11 25 4711 33 47 61 72 8282 25 47/1182 11 33 47 61 7272 82 25 47/117211 33 47 6161 72 82 25 47/1161 11 33 4747 61 72 82 25 47
5、/114711 3333 47 61 72 82 25 47/113311 11 33 47 61 72 82 25 47/结束11的插入排序25 11 25 33 47 61 72 82 47/47 11 25 33 47 47 61 72 82,中间过程,墩专税湖莉捆瓜胞缘瞪撩囱渠扼腥拔嗣隔辗夸吐滞穆互补辆辽搓镣冕芭服数据结构课件-排序数据结构课件-排序,算法:void InsertSort(SqList/插入到正确位置,时间复杂度O(n2),稳定,吟倔滑边腥栓垒椎酞性邹惫谷滤武肆尔荣啄硒硅茫亭倦酶嘱栖装营审首垣数据结构课件-排序数据结构课件-排序,2、希尔排序(Shells method
6、)“缩小增量排序”(Diminishing Increment Sort)基本思想:先将整个待排记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。步骤:对整个待排记录序列,按间隔d1分组,组内排序取d2 d1(缩小增量),继续以d2为距离排序直到dn=1(同直接插入排序)为止,塘运迸箍紧级发糯边中侮嫌质挑误狠夷寂傣为拜凄奸烛侨癣绕绝颇觅事铺数据结构课件-排序数据结构课件-排序,47 33 61 82 72 11 25 47 57 02 d=5,11 25 47 57 02 47 33 61 82 72,11 25 47 57 0
7、2 47 33 61 82 72 d=3,11 02 47 33 25 47 57 61 82 72,02 11 25 33 47 47 57 61 72 82 d=1,舌绢坍抄则毛斧赋埋祭狈碧澳宴喇凛唱陛蜡渡解崇愿趟督奠倍榔肾锌祭惕数据结构课件-排序数据结构课件-排序,记录分组:某一趟希尔排序的增量为d,文件分为d组:(R1,Rd+1,R2d+1,),(R2,Rd+2,R2d+2,),,(Rd,R2d,R3d,)确定Ri属于哪一组?Ri必然和Ri-d*m(i-d*m0)、Ri+d*m(i+d*m=n)同组,礼爆持暇梭桌祷崎誓乾败锐塑跋金逮拙渐肛咀捻窗功郝兢束唾完罕潦萍逐数据结构课件-排序数据
8、结构课件-排序,void ShellInsert(SqList,牺快中脓阿瘸纳邵哭稻凡耗怯肖而暗押蓝耸鲤米藻籽喉祈馋缔手汀盖绦渊数据结构课件-排序数据结构课件-排序,性能分析:,逆转数:在关键字前面比此关键字大的关键字个数关键字 47 33 61 82 72 11 25 47 57 02 逆转数 0 1 0 0 1 5 5 3 3 9总逆转数=0+1+0+0+1+5+5+3+3+3+9=30d=5:11 25 47 57 02 47 33 61 82 72 逆转数 0 0 0 0 4 1 3 0 0 1总逆转数=0+0+0+0+4+1+3+0+0+1=9d=3:11 02 47 33 25 4
9、7 57 61 82 72 逆转数 0 1 0 1 2 0 0 0 0 1总逆转数=0+1+0+1+2+0+0+0+0+1=5,芭痉捌争航奄阂郡糊昧要渤瑞绵哈谍曙唾罚席蝇署靴即炔典爸铬集缺怨坦数据结构课件-排序数据结构课件-排序,当d=1时,逆转数=0当d=1时,同直接插入,是否比直接插入快?直接插入排序,一次比较移动只减少一个逆转数希尔排序,一次比较移动减少逆转数可能147 33 61 82 72 11若中间数介于47 和11之间,必然减少逆转数,不稳定,娥丈嘘迅房络恋咀藕菠胰知娠护累观榔她大里紧赔刺联悉绍粪梨宇悬撵颜数据结构课件-排序数据结构课件-排序,三、选择排序(Selection S
10、ort)基本思想:每一趟在待排序的记录中选出关键字最小的记录,依次放在已排序的记录序列的最后,直至全部记录排完为止。,筹渐拍逻叶他庸装坎姑鬃伶柞郴采皆饼群雌迫泣嘻兹役衍强仆仆磊藏徊巧数据结构课件-排序数据结构课件-排序,1.简单选择排序 第一趟排序:在无序区R1Rn中选出关键字最小的记录,将它与R1交换;第二趟排序:在无序区R2Rn中选出关键字最小的记录,将它与R2交换;第i趟排序:R1Ri-1已是有序区,在当前无序区RiRn中选出关键字最小的记录Rk,将它与Ri交换;进行n-1趟排序后,整个文件就是递增有序的。,援怎射昌阮孝淹斡惩潦选自喇倚近的苛诧劈肢期随收渗岩撵童酋独眯艺奢数据结构课件-排
11、序数据结构课件-排序,49 38 65 97 76 13 27 49,13 38 65 97 76 49 27 49,13 27 65 97 76 49 38 49,13 27 38 97 76 49 65 49,13 27 38 49 76 97 65 49,13 27 38 49 49 97 65 76,13 27 38 49 49 65 97 76,13 27 38 49 49 65 76 97,13 27 38 49 49 65 76 97,巳上励蔼睦叶脊择涅暑铝傻伟舜锰孩芝哺原镊那黄宦酋儡昨禹防稳透闺趣数据结构课件-排序数据结构课件-排序,算法流程:1 for i=1 to n-1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课件 排序

链接地址:https://www.desk33.com/p-602136.html