- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
内部排序PPT
然后分别对这两个子序列重复施行上述方法,直到所有的对象都排在相应位置上为止。 算法描述 QuickSort ( List ) { if ( List的长度大于1) { 将序列List划分为两个子序列 LeftList 和 Right List; QuickSort ( LeftList ); QuickSort ( RightList ); 将两个子序列 LeftList 和 RightList 合并为一个序列List; } } 无 序 的 记 录 序 列 无序记录子序列(1) 无序子序列(2) 枢轴 一次划分 分别进行快速排序 快速排序的思想 21 25 49 25* 16 08 0 1 2 3 4 5 21 25* i = 1 49 25 16 25 16 08 49 pivot 08 25* 49 21 i = 2 i = 3 08 16 25* 25 21 pivot pivot pivot 一趟快速排序的算法 int Partition(SqList L, int low, int high) { L.r[0] = L.r[low]; int pivotkey = L.r[low].key; while (low high) { while (lowhigh L.r[high].key = pivotkey) --high; L.r[low] = L.r[high]; while (lowhigh L.r[low].key = pivotkey) ++low; L.r[high] = L.r[low]; } L.r[low]=L.r[0]; return low; } 快速排序的算法 void QSort(SqList L, int low, int high){ if (low high) { int pivotloc = Partition(L,low,high); QSort(L,low, pivotloc-1); QSort(L,pivotloc+1, high); } } void QuickSort(SqList L){ QSort(L,1,L.length); } 算法quicksort是一个递归的算法,其递归树如图所示。 算法partition利用序列第一个对象作为枢轴,将整个序列划分为左右两个子序列。算法中执行了一个循环,只要是关键字小于枢轴对象关键字的对象都移到序列左侧,最后枢轴对象安放到位,函数返回其位置。 21 25* 25 49 08 16 算法分析 从快速排序算法的递归树可知,快速排序的趟数取决于递归树的深度。 如果每次划分对一个对象定位后,该对象的左侧子序列与右侧子序列的长度相同,则下一步将是对两个长度减半的子序列进行排序,这是最理想的情况。 可以证明,函数quicksort的平均计算时间也是o(nlog2n)。实验结果表明:就平均计算时间而言,快速排序是我们所讨论的所有内排序方法中最好的一个。 快速排序是递归的,需要有一个栈存放每层递归调用时的指针和参数。 快速排序不稳定。 在最坏的情况,即待排序对象序列已经按其关键字从小到大排好序的情况下,其递归树成为单支树,每次划分只得到一个比上一次少一个对象的子序列。这样,必须经过 n-1 趟才能把所有对象定位,而且第 i 趟需要经过 n-i 次关键字比较才能找到第 i 个对象的安放位置,总的关键字比较次数将达到 思考题: 已知一组记录为(46,74,53,14,26,38,86,65,27,34),给出采用下列排序时每一趟的排序结果: 1)直接插入排序 2)快速排序法 3)希尔排序法 选择排序的基本思想是:每一趟 (例如第 i 趟,i = 1, …, n-1) 在后面的 n-i+1 个待排序对象中选出关键字最小的对象, 作为有序对象序列的第 i 个对象。待到第 n-1 趟作完,待排序对象只剩下1个,就不用再选了。 10.4选择排序(Selection Sort) 基本步骤为:i从1开始,直到n-1,进行n-1趟排序,第i 趟的排序过程为: 在一组对象r[i]~r[n] (i=1,2,…,n-1)中选择具有最小关键字的对象;并和第 i 个对象进行交换; 10.4.1简单选择排序 (Simple Se
您可能关注的文档
最近下载
- 桂皮醛在常用溶剂中稳定性考察—.PDF VIP
- 党群部笔试题目及答案解析.doc VIP
- 党群办公室笔试题目及答案.doc VIP
- 党群部笔试题目及答案.doc VIP
- (2025)党群部笔试题目与答案.docx VIP
- ASTM E1820-24 Standard Test Method for Measurement of Fracture Toughness 断裂韧性测量的标准试验方法.pdf
- 雷克萨斯-Lexus LS-产品使用说明书-LS460L-USF46L-AEZGHC5-LS460LOM50E87C-1509.pdf VIP
- 2014最好的十个企业即时通讯软件排名 .doc VIP
- 2025届职教高考语文复习学习任务3-1科学类文本阅读课件(共95张PPT)(广东省).ppt VIP
- 工段长述职发言稿.pptx VIP
文档评论(0)