问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

第三大题的应用题第一题 ①堆排序方法从小到大排序是什么意思?是要用小顶堆么?②重建堆是什么?

发布网友 发布时间:2022-05-14 04:39

我来回答

2个回答

热心网友 时间:2024-02-24 03:50

【概念】堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即A[PARENT[i]]>=A[i]。在数组的非降序排序中,需要使用的就是大根堆,因为根据大根堆的要求可知,最大的值一定在堆顶。【起源】1991年的计算机先驱奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德(RobertW.Floyd)和威廉姆斯(J.Williams)在1964年共同发明了著名的堆排序算法(HeapSort)。【简介】堆排序利用了大根堆(或小根堆)堆顶记录的关键字最大(或最小)这一特征,使得在当前无序区中选取最大(或最小)关键字的记录变得简单。(1)用大根堆排序的基本思想①先将初始文件R[1..n]建成一个大根堆,此堆为初始的无序区②再将关键字最大的记录R[1](即堆顶)和无序区的最后一个记录R[n]交换,由此得到新的无序区R[1..n-1]和有序区R[n],且满足R[1..n-1].keys≤R[n].key③由于交换后新的根R[1]可能违反堆性质,故应将当前无序区R[1..n-1]调整为堆。然后再次将R[1..n-1]中关键字最大的记录R[1]和该区间的最后一个记录R[n-1]交换,由此得到新的无序区R[1..n-2]和有序区R[n-1..n],且仍满足关系R[1..n-2].keys≤R[n-1..n].keys,同样要将R[1..n-2]调整为堆。……直到无序区只有一个元素为止。(2)大根堆排序算法的基本操作:①建堆,建堆是不断调整堆的过程,从len/2处开始调整,一直到第一个节点,此处len是堆中元素的个数。建堆的过程是线性的过程,从len/2到0处一直调用调整堆的过程,相当于o(h1)+o(h2)…+o(hlen/2)其中h表示节点的深度,len/2表示节点的个数,这是一个求和的过程,结果是线性的O(n)。②调整堆:调整堆在构建堆的过程中会用到,而且在堆排序过程中也会用到。利用的思想是比较节点i和它的孩子节点left(i),right(i),选出三者最大(或者最小)者,如果最大(小)值不是节点i而是它的一个孩子节点,那边交互节点i和该节点,然后再调用调整堆过程,这是一个递归的过程。调整堆的过程时间复杂度与堆的深度有关系,是lgn的操作,因为是沿着深度方向进行调整的。③堆排序:堆排序是利用上面的两个过程来进行的。首先是根据元素构建堆。然后将堆的根节点取出(一般是与最后一个节点进行交换),将前面len-1个节点继续进行堆调整的过程,然后再将根节点取出,这样一直到所有节点都取出。堆排序过程的时间复杂度是O(nlgn)。因为建堆的时间复杂度是O(n)(调用一次);调整堆的时间复杂度是lgn,调用了n-1次,所以堆排序的时间复杂度是O(nlgn)[2]注意:①只需做n-1趟排序,选出较大的n-1个关键字即可以使得文件递增有序。②用小根堆排序与利用大根堆类似,只不过其排序结果是递减有序的。堆排序和直接选择排序相反:在任何时刻堆排序中无序区总是在有序区之前,且有序区是在原向量的尾部由后往前逐步扩大至整个向量为止【特点】堆排序(HeapSort)是一树形选择排序。堆排序的特点是:在排序过程中,将R[l..n]看成是一棵完全二叉树的顺序存储结构,利用完全二叉树中双亲结点和孩子结点之间的内在关系(参见二叉树的顺序存储结构),在当前无序区中选择关键字最大(或最小)的记录【算法分析】堆排序的时间,主要由建立初始堆和反复重建堆这两部分的时间开销构成,它们均是通过调用Heapify实现的。平均性能:O(N*logN)。其他性能:由于建初始堆所需的比较次数较多,所以堆排序不适宜于记录数较少的文件。堆排序是就地排序,辅助空间为O(1)。它是不稳定的排序方法。(排序的稳定性是指如果在排序的序列中,存在前后相同的两个元素的话,排序前和排序后他们的相对位置不发生变化)。

热心网友 时间:2024-02-24 03:50

安大数据结构期末题吗?这题就是要建大顶堆,我刚开始看答案也以为答案错了。但是你看严蔚敏数据结构的书第281页有这么一句话:使记录序列按关键字非递减有序排列,则在堆排序的算法中先建一个“大顶堆”。重建堆是指选大顶堆的最顶层的最大数与序列中最后一个数交换,然后再重新调整为大顶堆的过程
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
悲观的意思是什么悲观是什么意思 ...坐立不安的。还总想挠挠手呀、胳膊什么的。这是怎么回事啊?是一种... ...胳膊肘麻,有时会麻到感觉大拇指根部疼,食指也有点... ...入睡感觉左胳膊从手腕到肩膀酥溜溜的酸,睁开眼又好了,什么原因... 胳膊上麻溜溜的 像是有小疙瘩 还很痒 有点硬 少量蔗糖,食盐,食油,食醋分别倒入一定量水中,并用筷子不断搅拌,观察... 将食盐 蔗糖 泥土 植物油与水混合 英文会计的provision对应中文会计的哪个词啊? 双人旁一个直一个心念什么,什么意思 白瓷有隙是成语吗 降序是什么意思? C++ 中几个数(如5,3,7,8,4)生成一个单链表,并升序排序,最简单和最常用的代码是什么 快速排序问题. 运行时间O(lgn)是什么意思 对二位数组就地排序 什么是就地排序 World文档怎样转成PDF格式? 投《万全人生重大疾病医疗保险》期满三个多月了,退保可全额退回所缴的款吗? 太平洋万全人生重大疾病保险 子宫肌瘤包括在内么? 双河走207国道到荆门火车站多少公里? 湖北荆门钟祥市双河镇有联通营业厅吗? MSP430 5438芯片如何设置输出上拉 新手小白关于msp430的问题 MSP430芯片为什么要引入DCO以及FLL技术? 蜂蜜放久了会有白白的泡沫,哪些是什么东西? 什么是浓缩蜜? 什么是浓缩蜜 为什么flex-direction不起作用 抖音哪个版本可以看到热度 哪位大神有手机版的人类一败涂地? 有没有可以买RPA机器人的平台? 他先绑李嘉诚之子,再绑郭炳湘,“世纪大盗”张子强到底有多强? 张子强是怎么回事 张子强绑架李泽钜,还绑架了郭炳湘,为何却不动女首富龚如心? 他被称为世纪贼王:绑架李嘉诚之子勒索10.38亿,结局如何? 张子强死后妻子罗艳芳携20亿远赴国外成为赢家,如今怎样? 传奇人物张子强为什么被后人称为“世纪大盗”? 世界贼王张子强,身价十几个亿,那他被捕之后,为何只找到一个亿? 有个警匪片里面的主角叫李什么的 是根据真实案例改编 “世纪贼王”终遇强劲对手,最后是搭上了性命吗? “世纪大盗”张子强到底有多厉害? 有没有好看的恐怖片,像爱奇艺那些软件上前几名就不要再说了,看过了 清远社保断缴多少个月清零 美食大战老鼠浮空岛十三香中心岛 美食大战老鼠浮空岛十三香中心岛有啥鼠? 美食大战老鼠十三香中心岛 美食大战老鼠浮空岛十三香中心站 美食大战老鼠13香中心岛猫猫枪过 美食大战老鼠60级打什么 美食大战老鼠浮空岛香料飞船