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

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

发布网友 发布时间:2022-04-24 17:02

我来回答

2个回答

热心网友 时间:2022-05-22 02:42

【概念】堆排序(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)。它是不稳定的排序方法。(排序的稳定性是指如果在排序的序列中,存在前后相同的两个元素的话,排序前和排序后他们的相对位置不发生变化)。

热心网友 时间:2022-05-22 04:00

安大数据结构期末题吗?这题就是要建大顶堆,我刚开始看答案也以为答案错了。但是你看严蔚敏数据结构的书第281页有这么一句话:使记录序列按关键字非递减有序排列,则在堆排序的算法中先建一个“大顶堆”。重建堆是指选大顶堆的最顶层的最大数与序列中最后一个数交换,然后再重新调整为大顶堆的过程
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
离职几个月公司发短信说我离职生效叫我回去补办离职交接手续怎么 开除员工不办手续违法吗 辞退员工没有办手续违法吗 苹果13/6.1录制两个人脸,后面换锁屏密码认证还有什么提醒,或者是两个人... 很规律很威严的词语是什么 我老了又无能 想有个爱我一辈子的 到今没 就一个人 把爱放心里 用数字... 日语N2 20天复习够吗 为什么泥工先于木工 泥工做好隔多久做木工 从泥工做好到做木工,需要等待多久? 水泥操作人员作业流程是怎样的? ...56,38,40,84),如果采用堆排序方法,则建立的初始堆是? C++堆排序建堆问题 数据结构的堆排序和初始堆的概念...我被搞懵了...他们有什么不同... ...写出初始建堆过程图示,再根据初始堆写出堆排序过程图示。_百度知 ... 请问工商银行的白金卡怎么办理啊?什么是白金卡啊~ 工行牡丹白金卡的办卡条件和途径? 工行信用卡申请:工行白金卡申请需要什么条件 工商银行借记卡金卡,白金卡.办理要什么条件 赛尔号,为什么游戏里迪恩是女的?动画片和电影里是男?还有为什么游戏里迪恩是好人,电影和动画里是坏人 赛尔号:迪恩的真实身份是什么啊? 赛尔号欧比组织迪恩究竟是什么人 赛尔号 这是什么精灵啊???图鉴里没有的一个 赛尔号6迪恩和他的精灵怎么样?叛变了吗? 赛尔号 迪恩的精灵 赛尔号上的迪恩是谁 迪恩·卡朋的追随精灵 小额贷款需要条件? 小额贷款有什么申请条件 冷水机冷冻机? 制冷量为22kw的制冷机相当于多少匹? 在手机上怎么查看QQ号码 手机qq号码忘了怎么办 用手机 作为qq号码可以吗? 如何用手机申请手机QQ号码 清风1758跑步机怎么链接手机? lncllne跑步机怎么连接手机音乐 立久佳A6跑步机怎样连接手机蓝牙? 贝德拉跑步机怎么和手机连蓝牙 小金k12跑步机TRK12F怎样用手机控制? 莫比跑步机能连几个手机 益步跑步机联网怎么切换数字 电视剧《夫妻那些事儿》洪小梅的扮演者是谁? 大连股票群 《L.L.DKELINB 》是不是老人头的标志? 米其林轮胎带有SNI什么意思? 我家的夏普电视怎么投屏不了? 实验室装修一般改造步骤有哪些? 如何查某个水果的名字? 中国人什么时候用筷子,由来众说纷纭 日剧过保护的加穗子被谁买了版权?