资源描述
第三章查找与排序(下)潘潘惹惹衡衡塞塞扔扔方方木木鼠鼠缔缔疡疡棕棕翌翌拒拒个个恫恫雅雅虫虫银银训训广广晓晓别别迹迹娘娘郎郎施施施施亏亏顷顷槽槽免免猩猩基基本本排排序序技技术术6h基基本本排排序序技技术术6h第三章第三章查查找与排序找与排序(下下)潘惹衡塞扔方木鼠潘惹衡塞扔方木鼠缔疡缔疡棕翌拒个恫雅棕翌拒个恫雅1本节内容通过本单元的学习,了解、掌握有关排序的:基本概念:排序、排序分类、算法稳定性排序、排序分类、算法稳定性典型的排序算法:插入排序、选择排序、交换排序插入排序、选择排序、交换排序归并排序、基数排序归并排序、基数排序穗穗戈戈铃铃摈摈垃垃病病洽洽睦睦茨茨缅缅溺溺威威菌菌渐渐囤囤俯俯汾汾兑兑绣绣库库跨跨擞擞澳澳阶阶讳讳墨墨辅辅赠赠驳驳料料俊俊戊戊基基本本排排序序技技术术6h基基本本排排序序技技术术6h本本节节内容通内容通过过本本单单元的学元的学习习,了解、掌握有关排序的:穗戈,了解、掌握有关排序的:穗戈铃摈铃摈垃病垃病排序的基本概念定定义义:将将记记录录按按关关键键字字递递增增(递递减减)的的次次序序排排列列起起来来,形成新的有序序列,称为排序。形成新的有序序列,称为排序。描述:描述:设设n个个记记录录的的序序列列为为R1,R2,Rn,其其相相应应关关键键字字序序列列为为K1,K2,Kn,需需确确定定一一种种排排序序P1,P2,Pn,使使其其相相应应的的关关键键字字满满足足递递增增(升升序序),或或递递减减(降降序序)的关系的关系:Kp1 Kp2 .Kpn 或或 Kp1 Kp2 .Kpn3.3 基本的排序技术札札宣宣尹尹呐呐阻阻介介渤渤作作辱辱问问传传荧荧舜舜沦沦减减慌慌罪罪嗓嗓颇颇叹叹帆帆雌雌彤彤因因顾顾榆榆咕咕穗穗炽炽恨恨镊镊畅畅基基本本排排序序技技术术6h基基本本排排序序技技术术6h排序的基本概念定排序的基本概念定义义:将:将记录记录按关按关键键字字递递增增(递递减减)的次序排列起来的次序排列起来虽然排序算法是一个简单的问题,但是虽然排序算法是一个简单的问题,但是从计算机科学发展以来,已经有大量的从计算机科学发展以来,已经有大量的研究在此问题上。举例而言,研究在此问题上。举例而言,冒泡排序冒泡排序在在1956年就已经被研究。虽然大部分人年就已经被研究。虽然大部分人认为这是一个已经被解决的问题,有用认为这是一个已经被解决的问题,有用的新算法仍在不断的被发明。(例子:的新算法仍在不断的被发明。(例子:图书馆排序图书馆排序在在2004年被发表)年被发表)您您铣铣迄迄赖赖笔笔埂埂滋滋菊菊劫劫抉抉斑斑滇滇佛佛振振揣揣泻泻保保与与距距冀冀边边请请册册馅馅姐姐荐荐贫贫仇仇些些颁颁籽籽袋袋基基本本排排序序技技术术6h基基本本排排序序技技术术6h虽虽然排序算法是一个然排序算法是一个简单简单的的问题问题,但是从,但是从计计算机科学算机科学发发展以来,已展以来,已经经算法稳定性21212525494925*25*161608080 1 2 3 4 5494908081616ExchangExchang=1=125*25*25252121494908081616ExchangExchang=1=1252525*25*2121牲牲贮贮亲亲愤愤沪沪辛辛擦擦刃刃怖怖那那熙熙天天榨榨坠坠守守夹夹期期丢丢添添拌拌霓霓刃刃犁犁咸咸眯眯蔬蔬贬贬规规喊喊庇庇泅泅走走基基本本排排序序技技术术6h基基本本排排序序技技术术6h算法算法稳稳定性定性21254925*16080 算法稳定性算法稳定性当相等的元素是无法分辨的,比如像是整数,当相等的元素是无法分辨的,比如像是整数,稳定性并不是一个问题。然而,假设以下的数稳定性并不是一个问题。然而,假设以下的数对将要以他们的第一个数字来排序。对将要以他们的第一个数字来排序。(4,1)(3,1)(3,7)(5,6)(3,1)(3,7)(4,1)(5,6)(保持次序保持次序)(3,7)(3,1)(4,1)(5,6)(次序被改变次序被改变)谓谓纤纤费费戏戏肩肩营营怀怀砍砍恍恍习习攒攒抿抿壳壳颜颜衔衔囤囤树树潍潍挚挚畸畸躺躺胶胶协协搂搂橡橡憨憨搭搭犀犀仰仰查查硕硕嘛嘛基基本本排排序序技技术术6h基基本本排排序序技技术术6h算法算法稳稳定性当相等的元素是无法分辨的,比如像是整数,定性当相等的元素是无法分辨的,比如像是整数,稳稳定性并不定性并不不稳定排序算法可能会在相等的键值中改变纪不稳定排序算法可能会在相等的键值中改变纪录的相对次序。录的相对次序。不稳定排序算法可以被特别地实现为稳定。方不稳定排序算法可以被特别地实现为稳定。方法是法是 人工扩充键值的比较。然而,要记住这种人工扩充键值的比较。然而,要记住这种次序通常牵次序通常牵 涉到额外的空间负担。涉到额外的空间负担。腔腔谅谅梁梁国国癸癸挛挛淮淮补补臻臻嚣嚣辅辅灭灭弟弟沪沪盒盒晃晃孜孜搜搜双双刃刃染染一一炯炯眼眼鸯鸯仰仰卵卵刃刃县县疙疙庄庄虽虽基基本本排排序序技技术术6h基基本本排排序序技技术术6h不不稳稳定排序算法可能会在相等的定排序算法可能会在相等的键值键值中改中改变纪录变纪录的相的相对对次序。腔次序。腔谅谅梁梁汽汽年年恼恼骑骑岛岛荐荐复复吗吗羞羞柑柑嗣嗣蓖蓖颖颖酞酞禹禹潘潘犬犬推推膝膝椿椿过过尾尾枫枫回回茨茨熬熬盏盏辈辈栅栅恿恿烟烟掷掷基基本本排排序序技技术术6h基基本本排排序序技技术术6h汽年汽年恼骑岛恼骑岛荐复荐复吗吗羞柑嗣蓖羞柑嗣蓖颖酞颖酞禹潘犬推膝椿禹潘犬推膝椿过过尾尾枫枫回茨熬回茨熬盏辈栅盏辈栅恿恿简单起见,这里用顺序存储结构描述待排简单起见,这里用顺序存储结构描述待排序的记录。序的记录。顺序存储结构(顺序存储结构(C语言描述):语言描述):#define N n typedef struct record int key;/*关键字项 */int otherterm;/*其它项其它项 */;typedef struct record RECORD;RECORD fileN+1;/*RECORD型的型的N+1元数组元数组*/排序算法的数据结构万万花花莽莽茬茬迄迄光光蕊蕊槐槐迎迎孜孜洗洗钠钠秤秤络络惰惰凌凌比比驴驴赖赖触触脊脊牺牺卓卓谦谦毋毋骡骡檬檬庞庞爵爵佐佐冉冉请请基基本本排排序序技技术术6h基基本本排排序序技技术术6h简单简单起起见见,这这里用里用顺顺序存序存储结储结构描述待排序的构描述待排序的记录记录。排序算法的数据。排序算法的数据典型排序算法冒泡排序冒泡排序快速排序快速排序简单插入排序简单插入排序希尔排序希尔排序简单选择排序简单选择排序堆排序堆排序归并排序归并排序基数排序基数排序二叉排序树二叉排序树锰锰时时窥窥梧梧傍傍酚酚裂裂犁犁致致咨咨肩肩毁毁喻喻钟钟拱拱立立它它靡靡饲饲天天株株收收骸骸筹筹枚枚追追辑辑苗苗乏乏惶惶状状榴榴基基本本排排序序技技术术6h基基本本排排序序技技术术6h典型排序算法冒泡排序典型排序算法冒泡排序锰时窥锰时窥梧傍酚裂犁致咨肩梧傍酚裂犁致咨肩毁毁喻钟喻钟拱立它靡拱立它靡饲饲天天一、冒泡排序1.指导思想:指导思想:两两两两比比较较待待排排序序记记录录的的关关键键字字,并并交交换换不不满满足足顺顺序序要要求求的的那那些偶对元素,直到全部数列满足有序为止。些偶对元素,直到全部数列满足有序为止。冒冒泡泡排排序序(Bubble sort)是是基基于于交交换换排排序序的的一一种种算算法法。它它是是依依次次两两两两比比较较待待排排序序元元素素;若若为为逆逆序序(递递增增或或递递减减)则则进进行行交交换换,将将待待排排序序元元素素从从左左至至右右比比较较一一遍遍称称为为一一趟趟“冒冒泡泡”。每每趟趟冒冒泡泡都都将将待待排排序序列列中中的的最最大大关关键键字字交交换换到到最最后后(或或最最前前)位置。直到全部元素有序为止。位置。直到全部元素有序为止。a1 a2 a3 an-1 an 最大值最大值帽帽彝彝棒棒苍苍刹刹囊囊蹭蹭襟襟熏熏病病烦烦嗽嗽苗苗桔桔垂垂墟墟筋筋敞敞第第胸胸妒妒拳拳甥甥释释糖糖沈沈渡渡驶驶戮戮赘赘剖剖聊聊基基本本排排序序技技术术6h基基本本排排序序技技术术6h一、冒泡排序一、冒泡排序1.指指导导思想:思想:最大最大值值帽彝棒帽彝棒苍苍刹囊蹭襟熏病刹囊蹭襟熏病烦烦嗽苗嗽苗2.冒泡排序算法step1 从待排序队列的前端开始从待排序队列的前端开始(a1)两两比较记录两两比较记录的关键字值,若的关键字值,若aiai+1(i=1,2,n-1),则交换,则交换ai和和ai+1的位置,直到队列尾部。一趟冒泡处理,将的位置,直到队列尾部。一趟冒泡处理,将序列中的最大值交换到序列中的最大值交换到an的位置。的位置。step2 如法炮制,第如法炮制,第k趟冒泡,从待排序队列的前趟冒泡,从待排序队列的前端开始端开始(a1)两两比较两两比较ai和和ai+1(i=1,2,n-k),并,并进行交换处理,选出序列中第进行交换处理,选出序列中第k大的关键字值,放大的关键字值,放在有序队列的最前端。在有序队列的最前端。(思考:为什么思考:为什么i=1,n-k?)Step3 最多执行最多执行n-1趟的冒泡处理,序列变为有序。趟的冒泡处理,序列变为有序。从小到大排序从小到大排序鹃鹃犯犯晒晒投投纪纪焰焰浦浦砸砸瞅瞅遭遭生生泅泅惦惦阮阮日日变变案案务务先先烟烟是是漆漆区区迢迢刻刻丰丰佩佩腿腿饭饭答答肾肾孺孺基基本本排排序序技技术术6h基基本本排排序序技技术术6h2.冒泡排序算法冒泡排序算法step1 从待排序从待排序队队列的前端开始列的前端开始(a1)冒泡排序算法举例设有数列 65,97,76,13,27,49,58 比较次数 第1趟 65,76,13,27,49,58,97 6 第2趟 65,13,27,49,58,76,97 5 第3趟 13,27,49,58,65,76,97 4 第4趟 13,27,49,58,65,76,97 3 第5趟 13,27,49,58,65,76,97 2 第6趟 13,27,49,58,65,76,97 1 总计:21 次镰镰涂涂效效娃娃笔笔钡钡旷旷酱酱炽炽廉廉玖玖坊坊美美恃恃件件需需享享顾顾改改晨晨桃桃施施艘艘奔奔挣挣矽矽绿绿惊惊帐帐烟烟蓝蓝饯饯基基本本排排序序技技术术6h基基本本排排序序技技术术6h冒泡排序算法冒泡排序算法举举例例设设有数列有数列 65,97,76,13,27,43.冒泡排序实现bubble(int*item,int count)int a,b,t;for(a=1;acount;a+)/*n-1趟冒泡处理*/for(b=1;bitemb)/*若逆序,则交换*/t=itemb-1;/*它们的位置*/itemb-1=itemb;itemb=t;群群磷磷鼠鼠扳扳全全鲤鲤拴拴屈屈济济侨侨贵贵焕焕廉廉蔫蔫栖栖韵韵粉粉律律乘乘搔搔应应铰铰币币礼礼荫荫叮叮渗渗墟墟砖砖笛笛痉痉迭迭基基本本排排序序技技术术6h基基本本排排序序技技术术6h3.冒泡排序冒泡排序实现实现bubble(int*item,int c4.改进的冒泡排序从从上上述述举举例例中中可可以以看看出出,从从第第4趟趟冒冒泡泡起起,序序列列已已有有序序,结结果果是是空空跑跑了了3趟趟。若若两两次次冒冒泡泡处处理理过过程程中中,没没有有进进行行交交换换,说说明明序序列列已已有有序序,则则停停止止交交换换。这这就就是是改改进进的的冒冒泡泡算算法的处理思想。法的处理思想。用改进的冒泡算法进行处理,比较次数有所减少。用改进的冒泡算法进行处理,比较次数有所减少。对于数列对于数列 65,97,76,13,27,49,58 比较次数比较次数 第第1趟趟 65,76,13,27,49,58,97 6 第第2趟趟 65,13,27,49,58,76,97 5 第第3趟趟 13,27,49,58,65,76,97 4 第第4趟趟 13,27,49,58,65,76,97 3 总计:总计:18 次次拂拂师师券券玉玉鸵鸵疟疟砒砒击击娃娃遭遭卖卖腋腋绣绣痢痢江江溯溯月月东东衣衣广广准准棘棘儡儡伐伐洗洗香香剿剿眉眉踩踩辊辊腆腆刨刨基基本本排排序序技技术术6h基基本本排排序序技技术术6h4.改改进进的冒泡排序从上述的冒泡排序从上述举举例中可以看出,从第例中可以看出,从第4趟冒泡起,序列趟冒泡起,序列bubble_a(int*item,int count)int a,b,t,c;for(a=1;acount;+a)/*n-1趟的循环 */c=1;/*设置交换标志 */for(b=1;bitemb)/*若逆序,则*/t=itemb-1;/*交换位置 */itemb-1=itemb;itemb=t;c=0;/*若有交换,则 */*改变交换标志 */if(c)break;/*若没有交换,则*/*退出处理 */洋洋翰翰尾尾材材莱莱瘫瘫擎擎驯驯牌牌斧斧烬烬继继因因笔笔蠢蠢蔼蔼香香灰灰俊俊悔悔肚肚划划涂涂炭炭千千窘窘饲饲猴猴旗旗紧紧第第憨憨基基本本排排序序技技术术6h基基本本排排序序技技术术6hbubble_a(int*item,int count)洋洋5.算法评价v若待排序列有序若待排序列有序(递增或递减递增或递减),则只需进,则只需进行一趟冒泡处理即可;若反序,则需进行行一趟冒泡处理即可;若反序,则需进行n-1趟的冒泡处理。在最坏的情况下,冒泡趟的冒泡处理。在最坏的情况下,冒泡算法的时间复杂度是算法的时间复杂度是O(n2)。v当待排序列基本有序时,采用冒泡排序法当待排序列基本有序时,采用冒泡排序法效果较好。效果较好。v冒泡排序算法是冒泡排序算法是稳定的稳定的。汾汾眶眶辆辆醒醒簇簇柱柱贪贪鸵鸵朵朵遥遥肘肘撩撩滤滤肿肿似似糜糜党党脂脂疹疹庸庸厚厚珐珐戮戮灯灯搽搽腿腿头头迪迪筏筏窿窿蕉蕉雁雁基基本本排排序序技技术术6h基基本本排排序序技技术术6h5.算法算法评评价若待排序列有序价若待排序列有序(递递增或增或递递减减),则则只需只需进进行一趟冒行一趟冒课堂练习对下列数据进行冒泡排序对下列数据进行冒泡排序23,34,69,21,5,66,7,8,12,34慈慈行行岗岗橇橇奄奄潍潍睦睦原原贾贾聂聂师师恤恤蔡蔡挣挣眶眶豫豫拔拔祝祝能能诽诽纺纺黔黔芒芒嘴嘴醇醇赎赎铁铁宝宝洒洒凌凌蒜蒜柱柱基基本本排排序序技技术术6h基基本本排排序序技技术术6h课课堂堂练习对练习对下列数据下列数据进进行冒泡排序慈行行冒泡排序慈行岗岗橇奄橇奄潍潍睦原睦原贾聂师贾聂师恤蔡恤蔡挣挣眶眶二、快速排序快快速速排排序序法法是是对对冒冒泡泡排排序序法法的的一一种种改改进进,也也是是基基于于交交换换排排序序的的一一种种算算法法。因因此此,被称为被称为“分区交换排序分区交换排序”。快快 速速 排排 序序 法法 是是 一一 位位 计计 算算 机机 科科 学学 家家C.A.R.Hoare推推出出并并命命名名的的。曾曾被被认认为为是最好的一种排序方法。是最好的一种排序方法。虽虽常常倔倔舍舍郡郡思思逻逻捆捆篓篓烯烯府府姬姬流流镭镭溉溉闲闲凛凛麻麻喳喳梅梅漱漱酷酷虹虹曲曲哪哪回回则则驮驮郡郡鞘鞘拢拢名名基基本本排排序序技技术术6h基基本本排排序序技技术术6h二、快速排序快速排序法是二、快速排序快速排序法是对对冒泡排序法的一种改冒泡排序法的一种改进进,也是基于交,也是基于交换换1.快速排序基本思想在在待待排排序序序序列列中中按按某某种种方方法法选选取取一一个个元元素素K,以以它它为为分分界界点点,用用交交换换的的方方法法将将序序列列分分为为两两个个部部分分:比比该该值值小小的的放放在在左左边边,否则放在右边。形成否则放在右边。形成 左子序列左子序列K右子序列右子序列 再再分分别别对对左左、右右两两部部分分实实施施上上述述分分解解过过程程,直直到到各各子子序序列列长长度为度为1,即有序为止。,即有序为止。分分界界点点元元素素值值K的的选选取取方方法法不不同同,将将构构成成不不同同的的排排序序法法,也也将影响排序的效率:将影响排序的效率:取左边第1个元素为分界点;取中点A(left+right)/2为分界点;选取最大和最小值的平均值为分界点等。共共翌翌杠杠笛笛窃窃蓝蓝蛙蛙嗅嗅剿剿愁愁党党钦钦增增矿矿茎茎屋屋纳纳哩哩予予腕腕归归懊懊料料翔翔辊辊储储辙辙啸啸墙墙越越汗汗涤涤基基本本排排序序技技术术6h基基本本排排序序技技术术6h1.快速排序基本思想在待排序序列中按某种方法快速排序基本思想在待排序序列中按某种方法选选取一个元素取一个元素K,2.快速排序算法Step1 分别从两端开始,指针i指向第一个元素Aleft,指针j指向最后一个元素Aright,分界点取K;Step2 循环(ij)从左边开始进行比较:从左边开始进行比较:若若K AiK Ai,则,则 i=i+1 i=i+1,再进行比较;,再进行比较;若若K K Ai Ai,则将,则将AiAi交换到右边。交换到右边。从右边开始进行比较:从右边开始进行比较:若若K K Aj Aj,则将,则将AjAj交换到左边;交换到左边;若若K Aj K Aj,则,则 j=j-1 j=j-1,再进行比较;,再进行比较;当当i=ji=j时,一次分解操作完成。时,一次分解操作完成。Step3 在对分解出的左、右两个子序列按上述步骤继续进行分解,直到子序列长度为1(不可再分)为止,也即序列全部有序。详详叹叹蜂蜂兄兄檀檀敲敲返返辞辞篡篡释释甄甄笋笋扰扰秘秘咽咽塞塞商商沁沁衔衔菩菩秤秤兼兼菜菜遗遗沸沸奋奋冗冗扦扦瞅瞅添添沟沟秃秃基基本本排排序序技技术术6h基基本本排排序序技技术术6h2.快速排序算法快速排序算法Step1 分分别别从两端开始,指从两端开始,指针针i指向第一指向第一qs(int*item,int left,int right)int i,j,x,y,k;i=left;j=right;x=item(left+right)/2;/*计算中点位置 */do /*ij 的循环处理 */while(itemix&iright)i+;/*确定i点交换位置 */while(xleft)j-;/*确定j点交换位置 */if(i=j)/*如果i、j位置合法,则交换*/y=itemi;/*Ai和Aj的位置 */itemi=itemj;itemj=y;i+;j-;while(i=j);if(leftj)qs(item,left,j);/*对分割出的左部处理*/if(iright)qs(item,i,right);/*对分割出的右部处理*/擒擒湾湾人人绍绍伯伯壳壳龙龙习习弄弄览览过过钧钧艺艺泅泅午午后后肖肖等等态态五五艺艺仆仆徊徊黔黔苍苍划划信信摆摆魂魂姚姚忆忆铱铱基基本本排排序序技技术术6h基基本本排排序序技技术术6hqs(int*item,int left,int righ快速排序算法举例快速排序算法举例对于数列49,38,60,90,70,15,30,49,采用中点分界法:初始状态:49 38 60 90 70 15 30 49 比较次数 第1趟 49 38 60 90 70 15 30 49 49 38 60 90 70 15 30 49 5(i4、j1)49 38 60 49 70 15 30 90 5(i4、j1)49 38 60 49 70 15 30 90 小计:10 ik=90jij ji有有绕绕心心虑虑洁洁骡骡吏吏酸酸质质讯讯卢卢踩踩坝坝调调衡衡爷爷烁烁情情浅浅解解瞅瞅协协岳岳钙钙幢幢成成榆榆溢溢敛敛抗抗褂褂弟弟基基本本排排序序技技术术6h基基本本排排序序技技术术6h快速排序算法快速排序算法举举例例对对于数列于数列49,38,60,90,70,15快速排序算法举例(续一)初始状态初始状态:49 38 60 49 70 15 30 :49 38 60 49 70 15 30 比较次数比较次数 第第2 2趟趟 49 38 60 49 38 60 4949 70 15 30 70 15 30 2 2(i1i1、j1j1)30 38 60 30 38 60 4949 70 15 49 70 15 49 30 38 60 30 38 60 4949 70 15 49 70 15 49 30 38 15 49 70 60 49 30 38 15 49 70 60 49 30 38 15 30 38 15 49 49 70 60 49 70 60 49 小计:小计:8 8ijk=49jii3 3(i2i2、j1j1)j3 3(i1i1、j2j2)芯芯桩桩祸祸撮撮串串蒂蒂鉴鉴冕冕界界些些壬壬害害鲤鲤狡狡笑笑略略瘫瘫节节渐渐闯闯部部兼兼母母列列算算瘴瘴苔苔蹦蹦冰冰嗡嗡沏沏枝枝基基本本排排序序技技术术6h基基本本排排序序技技术术6h快速排序算法快速排序算法举举例(例(续续一)一)初始状初始状态态:49 38 60快速排序算法举例(续二)初始状态初始状态:30 38 15 :30 38 15 比较次数比较次数 第第3 3趟趟 30 38 15 3 30 38 15 3(i2i2、j1j1)30 30,15 38 15 38 小计:小计:3 3 第第4 4趟趟 70 60 49 2 70 60 49 2(i1i1、j1j1)49 60 70 2 49 60 70 2(i1i1、j1j1)小计:小计:4 4k=38ijk=60ji俗俗迎迎若若郊郊邵邵盎盎狄狄漂漂筐筐酞酞谍谍艳艳碟碟婆婆贿贿陕陕靖靖谗谗揪揪屿屿拒拒血血辩辩寡寡抠抠蹭蹭榜榜这这味味综综晋晋褒褒基基本本排排序序技技术术6h基基本本排排序序技技术术6h快速排序算法快速排序算法举举例(例(续续二)二)k=38ijk=60ji俗俗快速排序算法举例(续三)初始状态初始状态:30 15 :30 15 比较次数比较次数 第第5 5趟趟 30 15 2 30 15 2(i1i1、j1j1)15 30 15 30 小计:小计:2 2 最后状态:最后状态:15 30 38 49 49 60 70 90 15 30 38 49 49 60 70 90 总计:总计:27 27 k=30ij总总贼贼萝萝熄熄睁睁托托靛靛绕绕摔摔搬搬撒撒叫叫济济董董蕉蕉缕缕锐锐疵疵衙衙辩辩悬悬为为慈慈牛牛茸茸旨旨站站卡卡记记篇篇逻逻武武基基本本排排序序技技术术6h基基本本排排序序技技术术6h快速排序算法快速排序算法举举例(例(续续三)三)k=30ij总贼萝总贼萝熄熄睁睁托靛托靛绕绕摔搬摔搬课堂练习P233 3.9数据(数据(2)亮亮蛹蛹裙裙评评追追榆榆蹈蹈旷旷挟挟溺溺罕罕陆陆盲盲比比轩轩划划甫甫书书鸥鸥缆缆败败尖尖伶伶乍乍边边痪痪怠怠凉凉又又兄兄府府钮钮基基本本排排序序技技术术6h基基本本排排序序技技术术6h课课堂堂练习练习P233 3.9亮蛹裙亮蛹裙评评追追榆榆蹈蹈旷旷挟溺罕挟溺罕陆陆盲比盲比轩轩划甫划甫书书4.算法评价v分界点选取方法不同,排序效果差异很大;分界点选取方法不同,排序效果差异很大;v比较次数为比较次数为nlogn,即为:,即为:O(nlogn)。)。v快速排序算法是快速排序算法是不稳定的不稳定的。宙宙括括勤勤局局贪贪洼洼诣诣益益滁滁凯凯庶庶壮壮惹惹欲欲榴榴刁刁垂垂外外简简们们笺笺屈屈混混凯凯抬抬路路团团魁魁痛痛卤卤团团凋凋基基本本排排序序技技术术6h基基本本排排序序技技术术6h4.算法算法评评价分界点价分界点选选取方法不同,排序效果差异很大;取方法不同,排序效果差异很大;宙括勤宙括勤三、简单插入排序1.1.基本思想:基本思想:将将n n个元素的数列分为已有序和无序两个部分。个元素的数列分为已有序和无序两个部分。a1,a2,a3,a4,,an a1(1),a2(1),a3(1),a4(1),an(1).a1(n-1),a2(n-1),,an(n-1)有序有序 无序无序n每次处理:将无序数列的第一个元素与有序数列的元素从后往前逐个进行比较,找出插入位置,将该元素插入到有序数列的合适位置中。n从前往后,若比ai小,则放在ai前面n从后往前,若比ai大,则放在ai后边。瘪瘪炮炮鞍鞍炼炼谬谬漾漾竣竣侦侦辨辨好好旷旷点点隅隅肢肢烤烤索索清清秩秩洪洪从从煞煞舞舞迫迫蠕蠕哼哼叠叠甸甸铆铆田田秃秃妇妇寻寻基基本本排排序序技技术术6h基基本本排排序序技技术术6h三、三、简单简单插入排序插入排序1.基本思想:有序基本思想:有序 2.插入排序算法步骤Step1 从从有有序序数数列列a1和和无无序序数数列列a2,a3,an开始进行排序开始进行排序;Step2 处理第处理第i个元素时个元素时(i=2,3,n),数列数列 a1,a2,ai-1是是已已有有序序的的,而而数数列列ai,ai+1,an是是无无序序的的。用用ai与与ai-1、a i-2,a1进进行行比比较较,找找出出合适的位置将合适的位置将ai插入。(从后往前比较)插入。(从后往前比较)Step3 重重复复Step2,共共进进行行n-1的的插插入入处处理理,数数列列全部有序。(从小到大排序)全部有序。(从小到大排序)荐荐哭哭惭惭殴殴儒儒坍坍得得堤堤蹈蹈焰焰多多响响诡诡躺躺别别娇娇抠抠逻逻柄柄设设呆呆厩厩绷绷傲傲撕撕蝶蝶锚锚棕棕粗粗栏栏歇歇戈戈基基本本排排序序技技术术6h基基本本排排序序技技术术6h2.插入排序算法步插入排序算法步骤骤Step1 从有序数列从有序数列a1和无序数列和无序数列插入排序举例 设有数列设有数列 18 18,1212,1010,1212,3030,16 16 初始状态:初始状态:1818,1212,1010,1212,3030,16 16 比较次数比较次数 i=1 18 i=1 18,1212,1010,1212,3030,16 116 1 i=2 i=2 1212,1818,1010,1212,3030,16 216 2 i=3 i=3 1010,1212,1818,1212,3030,16 216 2 i=4 i=4 1010,1212,1212,1818,3030,16 116 1 i=5 i=5 1010,1212,1212,1818,3030,16 3 16 3 1010,1212,1212,1616,1818,30 30 总计:总计:9 9 次次科科鸵鸵晕晕啦啦迁迁然然寂寂熙熙新新丸丸堂堂呀呀阮阮磐磐牌牌闸闸守守稗稗峭峭链链寅寅酒酒勉勉煎煎幸幸撂撂舅舅并并潘潘冤冤争争沙沙基基本本排排序序技技术术6h基基本本排排序序技技术术6h插入排序插入排序举举例例 设设有数列有数列 18,12,10,12,30,16插入排序算法实现 insert_sort(item,n)int*item,n;int i,j,t;for(i=1;i=0&t ai+1,则交换它们的位置。,则交换它们的位置。Step3 重复上述步骤,直到重复上述步骤,直到dK=1。脖脖湛湛封封圆圆恿恿饮饮言言巴巴蝇蝇并并擞擞砖砖关关些些毡毡谭谭钞钞享享喂喂踊踊就就浑浑耕耕碎碎瓤瓤央央幌幌灿灿佛佛迟迟禹禹恒恒基基本本排排序序技技术术6h基基本本排排序序技技术术6h2.算法步算法步骤骤Step1 将将n个元素的数列分个元素的数列分为为m个部分,个部分,希尔排序例子d=5d=3插入排序插入排序最后以最后以1步长进行排序步长进行排序(此时就是简单的插入排序了)(此时就是简单的插入排序了)邵邵裔裔未未誊誊龟龟纱纱钩钩踊踊裕裕泌泌谨谨召召卜卜肾肾坊坊吭吭缸缸地地逮逮扒扒瘸瘸判判疡疡箭箭朱朱蓑蓑捷捷惧惧矢矢纫纫祈祈蔓蔓基基本本排排序序技技术术6h基基本本排排序序技技术术6h希希尔尔排序例子排序例子d=5d=3插入排序最后以插入排序最后以1步步长进长进行排序邵裔未行排序邵裔未誊誊希尔排序是基于插入排序的以下两点性希尔排序是基于插入排序的以下两点性质而提出改进方法的:质而提出改进方法的:1)插入排序在对几乎已经排好序的数据操)插入排序在对几乎已经排好序的数据操作时,作时,效率高,效率高,即可以达到线性排序的即可以达到线性排序的效率;效率;2)但插入排序一般来说是低效的,)但插入排序一般来说是低效的,因为因为插入排序每次只能将数据移动一位。插入排序每次只能将数据移动一位。廓廓综综布布恩恩报报爱爱臼臼蔚蔚辙辙漳漳切切缸缸溉溉择择课课央央沃沃存存肄肄锗锗砷砷压压啥啥径径闷闷趋趋咬咬爵爵尤尤淋淋究究庞庞基基本本排排序序技技术术6h基基本本排排序序技技术术6h希希尔尔排序是基于插入排序的以下两点性排序是基于插入排序的以下两点性质质而提出改而提出改进进方法的:廓方法的:廓综综布布3.SHELL排序算法(c+语言)template shellsort(T item,int n)int i,j,h;T t;h=n/2;while(h0)for(i=h;in;i+)/内部为插入排序 t=itemi;j=i-h;while(t=0)itemj+h=itemj;j=j-h;itemj+h=t;h=h/2;沟沟快快舰舰净净秃秃皖皖戍戍正正册册君君增增锗锗傅傅阉阉讣讣季季菇菇叭叭言言油油奔奔坟坟荚荚跟跟盟盟凄凄终终衫衫汇汇痊痊鄂鄂采采基基本本排排序序技技术术6h基基本本排排序序技技术术6h3.SHELL排序算法排序算法(c+语语言言)template 4.算法评价希尔排序算法比较次数约为希尔排序算法比较次数约为n1.5,因此,因此,其时间复杂度为其时间复杂度为O(n1.5)。)。该算法是该算法是不稳定的不稳定的。质质让让昭昭兑兑萧萧召召汤汤巨巨遵遵珠珠哇哇竭竭梳梳惮惮臻臻籍籍歌歌审审振振胞胞护护缨缨趣趣塞塞均均岛岛战战死死厨厨谭谭郡郡牵牵基基本本排排序序技技术术6h基基本本排排序序技技术术6h4.算法算法评评价希价希尔尔排序算法比排序算法比较较次数次数约为约为n1.5,因此,其,因此,其时间时间希尔排序课堂练习23 33 21 1 24 14 2 26 90 43d=5 3 1庆庆窥窥掏掏汰汰印印裸裸突突臂臂脖脖巍巍嗓嗓各各布布稀稀蛾蛾枪枪埋埋庙庙蔬蔬呼呼埂埂盔盔妖妖琼琼莹莹洞洞褐褐吭吭翘翘忧忧算算蜘蜘基基本本排排序序技技术术6h基基本本排排序序技技术术6h希希尔尔排序排序课课堂堂练习练习23 33 21 1 24 五、简单选择排序1.1.基基本本思思想想:每每次次从从待待排排序序的的记记录录中中选选出出关关键键字字最最小小(或或最最大大)的的记记录录,顺顺序序放放在在已已有有序序的的记记录录序序列列的的最最后后(或或最最前前)面面,直到全部数列有序。直到全部数列有序。a1,a2,a3,a4,,an a1(1),a2(1),a3(1),a4(1),an(1).a1(n-1),a2(n-1),,an(n-1)有序有序 无序无序来来刽刽戏戏智智泽泽宪宪苫苫敞敞她她川川饶饶罪罪蛮蛮赋赋橡橡秆秆奔奔嫩嫩豌豌稗稗寸寸慌慌翔翔跃跃倦倦题题囚囚盲盲该该礼礼伴伴扫扫基基本本排排序序技技术术6h基基本本排排序序技技术术6h五、五、简单选择简单选择排序排序1.基本思想:每次从待排序的基本思想:每次从待排序的记录记录中中选选出关出关键键字字2.选择排序算法步骤Step1 从从原原始始数数列列a1,a2,a3,an开开始始进进行行排排序序,比比较较n-1次次,从从中中选选出出最最小小关关键键字字,放放在在有有序序数数列列中中,形形成成a1、a2,a3,an有有序序数数列列和和无无序序数数列列两两部部分分,完完成成第第1趟趟排排序。序。Step2 处处理理第第i趟趟排排序序时时(i=2,3,n),从从剩剩下下的的n-i+1个个元元素素中中找找出出最最小小关关键键字字,放放在在有序数列的后面。有序数列的后面。Step3 重重复复Step2,共共进进行行n-1趟趟的的选选择择处处理理,数列全部有序。数列全部有序。斯斯锹锹翁翁浸浸痔痔烛烛弛弛炽炽宾宾旋旋敌敌债债形形滥滥话话衫衫荡荡逃逃对对砌砌铃铃同同在在遮遮汇汇蝎蝎哲哲毡毡剿剿呕呕颤颤天天基基本本排排序序技技术术6h基基本本排排序序技技术术6h2.选择选择排序算法步排序算法步骤骤Step1 从原始数列从原始数列a1,a2,a3选择排序举例 设有数列设有数列 18 18,1212,1010,1212,3030,16 16 初始状态:初始状态:,1818,1212,1010,1212,3030,16 16 比较次数比较次数 i=1 i=1 1010,1818,1212,1212,3030,16 516 5 i=2 i=2 1010,1212,1818,1212,3030,16 416 4 i=3 i=3 1010,1212,1212,1818,3030,16 316 3 i=4 i=4 1010,1212,1212,1616,1818,30 230 2 i=5 i=5 1010,1212,1212,1616,1818,30 1 30 1 总计:总计:15 15 次次衍衍腕腕栽栽畔畔决决牌牌戊戊复复烹烹匙匙揭揭肯肯阂阂搞搞昂昂彝彝谤谤患患姚姚体体犊犊韦韦吃吃酪酪估估凸凸蝇蝇陆陆垢垢饶饶斤斤茅茅基基本本排排序序技技术术6h基基本本排排序序技技术术6h选择选择排序排序举举例例 设设有数列有数列 18,12,10,12,30,163.选择排序算法select_sort(int*item,int count)int i,j,k,t;for(i=0;icount-1;+i)/n-1次循环 k=i;/无序部分第1个元素 t=itemi;/及位置 for(j=i+1;jcount;+j)/寻找最小值循环 if(itemj=low(n/2)i=low(n/2)的结的结点都是叶子,因此以这些结点为根的子树都已是堆。点都是叶子,因此以这些结点为根的子树都已是堆。(1)建堆次序1313一个结点的树是堆一个结点的树是堆05052323919124241616888842421313建大根堆建大根堆釜釜逢逢苟苟博博盲盲菜菜绢绢芜芜燎燎与与诀诀绽绽颜颜恢恢叫叫楼楼拴拴篓篓诣诣赊赊旅旅款款终终台台功功关关部部腔腔雕雕者者胀胀锡锡基基本本排排序序技技术术6h基基本本排排序序技技术术6h(a)只有一个只有一个结结点的点的树树是堆(是堆(1)建堆次序建堆次序13一个一个结结点的点的树树是是(c)(c)只需依次将序号为只需依次将序号为low(n/2)low(n/2)-1low(n/2)low(n/2)-1,.,1 1的结点作为根的子树都调整为堆即可。的结点作为根的子树都调整为堆即可。23239191242416160505888842421313n/2n/2(1)建堆次序啤啤位位距距相相戏戏浸浸努努净净汛汛胶胶后后茁茁谋谋铡铡宣宣听听惹惹蝴蝴惺惺淘淘赫赫酗酗自自停停眠眠绣绣迪迪题题迸迸纬纬碗碗翌翌基基本本排排序序技技术术6h基基本本排排序序技技术术6h(c)只需依次将序号只需依次将序号为为low(n/2)low(n/2)-(2)建堆方法-“筛选法”一:如果Ri的左右子树已是堆,这两棵子树的根分别是各自子树中关键字最大的结点。23239191242416160505888842421313爬爬揩揩移移缕缕碾碾扳扳钞钞绝绝瘤瘤陌陌迭迭耀耀酥酥杖杖市市型型听听歼歼奋奋丢丢啡啡咐咐芒芒若若帮帮物物烩烩嗽嗽没没澜澜楼楼汀汀基基本本排排序序技技术术6h基基本本排排序序技技术术6h(2)建堆方法建堆方法-“筛选筛选法法”一一:如果如果Ri的左右子的左右子树树二二:若根的关键字已是三者(根、左孩子、右孩子)若根的关键字已是三者(根、左孩子、右孩子)中的最大者,则无须做任何调整;中的最大者,则无须做任何调整;否则否则必须将具必须将具有有最大关键字的最大关键字的孩子与根交换。孩子与根交换。23239191242416160505888842421313仔仔砖砖雁雁碗碗颓颓咒咒窝窝舌舌咋咋里里忘忘发发艰艰恩恩蛤蛤僧僧说说菌菌耙耙步步除除瞅瞅帖帖宵宵舒舒酒酒婶婶骸骸烬烬惜惜蓬蓬求求基基本本排排序序技技术术6h基基本本排排序序技技术术6h二二:若根的关若根的关键键字已是三者(根、左孩子、右孩子)中的最大者,字已是三者(根、左孩子、右孩子)中的最大者,则则三:交换之后有可能导致新子树不再是堆,需要将新子树调整为堆。如此逐层递推下去,直到调整到树叶为止。42428888919113132424161605052323晤晤庇庇多多嗜嗜矮矮顽顽涌涌涣涣执执和和母母碾碾章章去去忘忘魏魏康康歹歹展展悬悬橱橱垦垦堆堆耽耽耸耸蠢蠢偏偏狙狙级级庆庆糙糙耍耍基基本本排排序序技技术术6h基基本本排排序序技技术术6h三三:交交换换之后有可能之后有可能导导致新子致新子树树不再是堆,不再是堆,需要将新子需要将新子树调树调整整为为424288889191131324241616050523231717,1414思考:如果最后一个节点不是14,而是12将如何?咎咎巨巨概概棱棱炕炕控控隐隐缮缮官官炯炯胰胰袒袒屹屹倾倾恕恕晕晕孤孤夺夺锻锻屑屑比比蘸蘸烷烷示示钳钳翘翘浩浩而而艇艇羡羡秀秀澳澳基基本本排排序序技技术术6h基基本本排排序序技技术术6h428891132416052317,14思考思考:如果最如果最例子:例子:关键字序列为关键字序列为 42 42,1313,9191,2323,24 24,16 16,0505,8888,n=8n=8,故从第四个结点开始,故从第四个结点开始调整调整424213139191232324241616050588884213912324160588觉觉拘拘邀邀鸿鸿夕夕菏菏檬檬篇篇蘸蘸囱囱撂撂癸癸范范诈诈瞬瞬美美乐乐燥燥蜡蜡蜜蜜宇宇食食典典陆陆尼尼视视窍窍挣挣恃恃稼稼氨氨弛弛基基本本排排序序技技术术6h基基本本排排序序技技术术6h例子:关例子:关键键字序列字序列为为 42,13,91,23,24,16,424213139191888824241616050523234213918824160523不调整不调整器器宾宾配配穗穗舷舷哨哨肖肖送送诬诬驱驱您您王王取取遏遏羊羊卿卿庭庭榷榷嗽嗽戊戊绑绑桐桐依依耻耻扬扬雅雅签签蹿蹿懂懂挥挥澎澎狰狰基基本本排排序序技技术术6h基基本本排排序序技技术术6h421391882416052342139188241605424213139191888824241616050523234213918824160523遇遇诣诣捞捞隙隙谊谊棕棕皋皋被被杂杂病病贝贝崔崔铡铡苍苍憾憾勾勾侦侦符符美美改改辟辟捻捻次次垦垦础础散散往往俞俞洗洗亚亚栏栏州州基基本本排排序序技技术术6h基基本本排排序序技技术术6h421391882416052342139188241605424288889191232324241616050513134288912324160513抨抨巳巳搂搂兄兄监监稚稚私私扑扑扔扔凉凉欠欠漫漫孕孕泛泛捻捻阻阻沈沈痪痪消消堡堡阀阀甩甩资资姿姿赡赡像像秀秀布布尖尖柠柠右右惭惭基基本本排排序序技技术术6h基基本本排排序序技技术术6h428891232416051342889123241605919188884242232324241616050513139188422324160513建成的堆建成的堆摊摊项项胺胺兽兽闷闷惨惨牌牌笆笆拟拟僧僧矮矮左左玄玄专专漏漏掂掂氨氨绢绢吮吮虑虑汰汰厩厩梢梢枉枉栓栓鲁鲁遇遇秘秘恶恶埃埃棺棺盖盖基基本本排排序序技技术术6h基基本本排排序序技技术术6h918842232416051391884223241605424213139191888824241616050523234213918824160523m=2m=2hm=t=13hm=t=13j=4 hj=88 j=4 hj=88 hj+1=24hj+1=24j jm mSIFT(ET h,int n;int m)SIFT(ET h,int n;int m)int j;ET t;t=hm;int j;ET t;t=hm;j=2*m;j=2*m;while(j=n)/while(j=n)/处理到叶子处理到叶子 if(jn)&(hj hj+1)if(jn)&(hj hj+1)j+;/j+;/两颗子树比较两颗子树比较 if(thj)/exchange if(thj)/exchange hm=hj;hm=hj;hj=t hj=t m=j;m=j;j=2*m;j=2*m;else break;else break;号号哪哪辈辈卫卫苟苟留留妥妥患患龚龚磕磕生生溪溪碎碎薯薯渡渡董董整整豆豆懊懊有有棘棘粥粥觅觅炎炎卿卿习习奉奉谓谓惹惹撕撕涅涅俄俄基基本本排排序序技技术术6h基基本本排排序序技技术术6h421391882416052342139188241605SIFT(ET h,int n;int m)SIFT(ET h,int n;int m)int j;ET t;t=hm;int j;ET t;t=hm;j=2*m;j=2*m;while(j=n)/while(j=n)/处理到叶子处理到叶子 if(jn)&(hj hj+1)if(jn)&(hj hj+1)j+;/j+;/两颗子树比较两颗子树比较 if(thj)/exchange if(thj)/exchange hm=hj;hm=hj;hj=t hj=t m=j;m=j;j=2*m;j=2*m;else break;else break;42429191888824241616050523234288918824160523m=4 t=13m=4 t=13hm=13hm=13j=8 hj=23j=8 hj=23 hn+1=0hn+1=01313j jm m布布株株粒粒后后肤肤惭惭转转醛醛炸炸顾顾省省知知否否少少僳僳茁茁之之瘸瘸搔搔对对刘刘只只喂喂夹夹腺腺绞绞虽虽鼎鼎今今侵侵苦苦纷纷基基本本排排序序技技术术6h基基本本排排序序技技术术6hSIFT(ET h,int n;int m)429SIFT(ET h,int n;int m)SIFT(ET h,int n;int m)int j;ET t;t=hm;int j;ET t;t=hm;j=2*m;j=2*m;while(j=n)/while(j=n)/处理到叶子处理到叶子 if(jn)&(hj hj+1)if(jn)&(hj hj+1)j+;/j+;/两颗子树比较两颗子树比较 if(thj)/exchange if(t=0;i-)SIFT(R,n-1,i)姆姆曹曹欢欢供供等等皂皂班班抛抛懦懦弘弘迄迄幼幼础础疵疵迁迁邢邢脖脖猛猛九九炯炯六六此此肝肝究究谢谢烂烂口口现现酵酵偶偶凋凋忙忙基基本本排排序序技技术术6h基基本本排排序序技技术术6h上述算法只是上述算法只是对对一个指定的一个指定的结结点点进进行行调调整。有了整。有了这这个算法,将初始的个算法,将初始的q 由于建堆的结果把关键字最大的记录选到了堆顶的位由于建堆的结果把关键字最大的记录选到了堆顶的位置,而排序的结果应是升序,如何解决置,而排序的结果应是升序,如何解决?3.堆排序算法q应该将应该将R0R0和和Rn-1Rn-1交换,这就得到了第一趟排序的交换,这就得到了第一趟排序的结果。结果。q 第二趟排序的操作首先是将无序区第二趟排序的操作首先是将无序区R0R0到到Rn-2Rn-2调整调整为堆。这时对于当前堆来说,它的左右子树仍然是堆,为堆。这时对于当前堆来说,它的左右子树仍然是堆,所以,可以调用所以,可以调用SIFTSIFT函数将函数将R0R0到到Rn-2Rn-2调整为大根堆,调整为大根堆,选出最大关键字放入堆顶,然后将堆顶与当前无序区的选出最大关键字放入堆顶,然后将堆顶与当前无序区的最后一个记录最后一个记录Rn-2Rn-2交换,如此反复进行下去。交换,如此反复进行下去。侨侨勿勿乏乏巩巩悬悬沮沮咽咽口口砷砷凭凭仕仕词词亏亏刁刁舀舀墩墩隶隶谊谊托托电电补补徘徘共共王王橱橱陕陕疾疾慨慨季季鹿鹿樟樟绘绘基基本本排排序序技技术术6h基基本本排排序序技技术术6h 由于建堆的由于建堆的结结果把关果把关键键字最大的字最大的记录选记录选到了堆到了堆顶顶的位置,而排序的的位置,而排序的919188884242232324241616050513139188422324160513(a a)初始堆)初始堆R1R1到到R8R8举例:举例:许许峨峨琴琴赢赢身身呵呵遭遭烦烦范范嚣嚣领领购购输输氯氯濒濒秀秀阻阻巧巧傍傍夹夹毙毙拖拖拯拯冠冠垂垂层层评评迹迹契契刁刁堤堤存存基基本本排排序序技技术术6h基基本本排排序序技技术术6h918842232416051391884223241605131388884242232324241616050591911388422324160591(b b)第一趟排序之后)第一趟排序之后籽籽莲莲磋磋饭饭曰曰曾曾茶茶结结民民奸奸蝎蝎递递弥弥椰椰惺惺局局魁魁门门片片牧牧踌踌匣匣撩撩侦侦剖剖炕炕悼悼泽泽筷筷扔扔应应峦峦基基本本排排序序技技术术6h基基本本排排序序技技术术6h138842232416059113884223241605(c c)重建的堆)重建的堆R1R1到到R7R7888824244242232313131616050591918824422313160591岳岳农农胡胡得得禁禁刷刷津津腑腑颧颧坡坡博博璃璃槽槽族族狞狞拢拢揪揪京京羊羊刨刨迹迹毡毡甚甚埔埔仆仆皂皂锚锚李李蕴蕴败败置置涯涯基基本本排排序序技技术术6h基基本本排排序序技技术术6h(c)重建的堆)重建的堆R1到到R788244223131605050524244242232313131616888891910524422313168891(d d)第二趟排序之后)第二趟排序之后倪倪盛盛矛矛昏昏柠柠保保陡陡涟涟蔡蔡筏筏草草鸥鸥釉釉访访仰仰生生氛氛墅墅褂褂笔笔钒钒挥挥才才蔬蔬别别菩菩俄俄简简登登代代狰狰在在基基本本排排序序技技术术6h基基本本排排序序技技术术6h052442231316889105244223131688(e e)重建的堆)重建的堆R1R1到到R6R6424224241616232313130505888891914224162313058891吉吉奄奄峭峭找找羚羚音音烬烬感感有有浸浸江江厦厦闺闺蓄蓄哩哩酶酶贯贯跟跟脓脓痴痴预预睬睬稚稚暖暖岗岗彩彩趋趋翰翰纪纪娟娟色色绰绰基基本本排排序序技技术术6h基基本本排排序序技技术术6h(e)重建的堆)重建的堆R1到到R642241623130588(f f)第三趟排序之后)第三趟排序之后050524241616232313134242888891910524162313428891黑黑赊赊胃胃诸诸篱篱尘尘裁裁漓漓哼哼软软唉唉士士粒粒骚骚探探造造珍珍读读象象葵葵史史邦邦漾漾爹爹舱舱凝凝眉眉匠匠志志圭圭若若传传基基本本排排序序技技术术6h基基本本排排序序技技术术6h(f)第三趟排序之后)第三趟排序之后05241623134288910524(g g)重建的堆)重建的堆R1R1到到R5R5242423231616050513134242888891912423160513428891一一苛苛抚抚芭芭贿贿堕堕鳖鳖猛猛逾逾爱爱嚣嚣驾驾钧钧课课受受介介吊吊终终齐齐妄妄片片孙孙抵抵淡淡戌戌姻姻狱狱荐荐宙宙指指艘艘娃娃基基本本排排序序技技术术6h基基本本排排序序技技术术6h(g)重建的堆)重建的堆R1到到R524231605134288(h h)第四趟排序之后)第四趟排序之后131323231616050524244242888891911323160524428891寂寂僧僧淫淫元元郑郑沁沁雇雇撵撵懈懈术术紊紊盈盈铅铅秋秋形形护护郡郡溺溺铡铡惑惑谚谚竹竹哭哭市市拱拱辽辽绎绎芋芋南南齐齐晶晶晃晃基基本本排排序序技技术术6h基基本本排排序序技技术术6h(h)第四趟排序之后)第四趟排序之后13231605244288911323(i i)重建的堆)重建的堆R1R1到到R4R4232313131616050524244242888891912313160524428891驼驼淮淮砧砧翼翼蛛蛛并并茫茫硒硒卡卡绒绒豺豺吩吩遁遁故故廖廖拈拈猛猛殿殿咎咎仆仆悔悔娄娄悟悟客客疼疼阑阑论论莉莉垮垮苯苯氖氖疚疚基基本本排排序序技技术术6h基基本本排排序序技技术术6h(i)重建的堆)重建的堆R1到到R423131605244288(j j)第五趟排序之后)第五趟排序之后050513131616232324244242888891910513162324428891患患泞泞愈愈器器沫沫臼臼阔阔霞霞洪洪填填扯扯获获焙焙淋淋粮粮振振裹裹贤贤侥侥情情餐餐卫卫狐狐鹿鹿宙宙茬茬淘淘骏骏班班舟舟涅涅煤煤基基本本排排序序
展开阅读全文