堆排序大根堆如何排序
@袁冠4778:大根堆排序算法的基本操作是什么?
明卓13034861678…… (2)大根堆排序算法的基本操作:①建堆,建堆是不断调整堆的过程,从len/2处开始调整,一直到第一个节点,此处len是堆中元素的个数
@袁冠4778:大根堆 为什么排序结果是递增的?大根堆不是根结点最大吗?那输出顶点的顺序不就是:第一大、第二大、第三大.最小.这不是递减吗、怎么得出递增的结果... - 作业帮
明卓13034861678…… [答案] 堆使用的时候都是每次把堆顶的元素干掉留下堆内部的元素做成Top N,你要找最大的N个元素需要使用小根堆每次把最小的元素干掉,保证剩下来的是最小的N个,如果你用大根堆,每次淘汰堆顶元素的话,得到的是最小的N个.出来结果递增的正是...
@袁冠4778:数据结构堆排序 -
明卓13034861678…… 首先建立初始大根堆:(99,95,60,38,76,10,40) 第一趟排序后结果:(95,76,60,38,40,10,99) 第二趟排序后结果:(76,40,60,38,10,95,99) 第三趟排序后结果:(60,40,10,38,76,95,99) 第四趟排序后结果:(40,38,10,60,76,95,99) 第五趟排序后结果:(38,10,40,60,76,95,99) 第六趟排序后结果:(10,38,40,60,76,95,99)
@袁冠4778:【讨论】请问堆排序出来的序列通过堆排序,大根堆 出来的是降序还是升序[] - 作业帮
明卓13034861678…… [答案] 堆作为满二叉树,应该是用数组来实现的那么root作为大根堆的最大元素位于data【0】,其他的元素不管此时做堆排序,删除root,保存在tmp变量中调整堆,那么原来的堆的大小减一,数组最后一位空出赋以tmp那么最大元素位于数组尾部以此类推...
@袁冠4778:请教数据结构 大根堆 排序问题 -
明卓13034861678…… 25 / \ 48 16/ \ / \ 35 79 82 23 / \ / 40 36 72 25 / \ 48 16/ \ / \ 40 79 82 23 / \ / 35 36 72 25 / \ 48 82/ \ / \ 40 79 16 23 / \ / 35 36 72 25 / \ 79 82/ \ / \ 40 72 16 23 / \ / 35 36 48 82 / \ 79 25/ \ / \ 40 72 16 23 / \ / 35 36 48 结束
@袁冠4778:请教数据结构 大根堆 将序列 调整为大根堆排序,求教(25,48,16,35,79,82,23,40,36,72) - 作业帮
明卓13034861678…… [答案] 25 / \ 48 16/ \ / \ 35 79 82 23 / \ / 40 36 72 25 / \ 48 16/ \ / \ 40 79 82 23 / \ / 35 36 72 25 / \ 48 82/ \ / \ 40 79 16 23 / \ / 35 36 72 25 / \ 79 82/ \ / \ 40 72 16 23 / \ / 35 36 48 82 / \ 79 25/ \ / \ 40 72 16 23 / \ / 35 36 48 结束
@袁冠4778:有关堆排序 -
明卓13034861678…… 分为大根堆和小根堆,也就是画成二叉树的样子,大根堆顾名思义就是大的在上面小的在下面,小根堆则相反,而且两者都是从左子树的叶子结点进行遍历,找以叶子结点的那一分支进行比较
@袁冠4778:堆的建立过程和排序 -
明卓13034861678…… 我排序的过程,跟你不一样,不过结果是对的.先把数据构建成最大堆.就是根节点比它的2个子节点要大. 56 50 48 这就市最大堆 你的原数据 46 79 56 38 40 84 84比它的根大,所以84跟56换 46 79 84 38 40 56 38和40都比它的根节点79...
@袁冠4778:堆排序的简介 -
明卓13034861678…… 堆排序利用了大根堆(或小根堆)堆顶记录的关键字最大(或最小)这一特征,使得在当前无序区中选取最大(或最小)关键字的记录变得简单.(1)用大根堆排序的基本思想 ① 先将初始文件R[1..n]建成一个大根堆,此堆为初始的无序区 ② 再将...
@袁冠4778:堆排序问题 -
明卓13034861678…… 不知道你是递增排序还是递减排序, 如果是递增排序,则初始堆为大根堆,初始化调整后的排列是这样的:146, 79, 84, 38,40,56 如果是递减排序,则初始堆为小根堆,初始化调整后的排列是这样的:38, 40,56,79,146,84 都不是你的答案 是否是递增排序调整为初始堆后,第一趟排序的结果,这时倒是最后一个元素就是146
明卓13034861678…… (2)大根堆排序算法的基本操作:①建堆,建堆是不断调整堆的过程,从len/2处开始调整,一直到第一个节点,此处len是堆中元素的个数
@袁冠4778:大根堆 为什么排序结果是递增的?大根堆不是根结点最大吗?那输出顶点的顺序不就是:第一大、第二大、第三大.最小.这不是递减吗、怎么得出递增的结果... - 作业帮
明卓13034861678…… [答案] 堆使用的时候都是每次把堆顶的元素干掉留下堆内部的元素做成Top N,你要找最大的N个元素需要使用小根堆每次把最小的元素干掉,保证剩下来的是最小的N个,如果你用大根堆,每次淘汰堆顶元素的话,得到的是最小的N个.出来结果递增的正是...
@袁冠4778:数据结构堆排序 -
明卓13034861678…… 首先建立初始大根堆:(99,95,60,38,76,10,40) 第一趟排序后结果:(95,76,60,38,40,10,99) 第二趟排序后结果:(76,40,60,38,10,95,99) 第三趟排序后结果:(60,40,10,38,76,95,99) 第四趟排序后结果:(40,38,10,60,76,95,99) 第五趟排序后结果:(38,10,40,60,76,95,99) 第六趟排序后结果:(10,38,40,60,76,95,99)
@袁冠4778:【讨论】请问堆排序出来的序列通过堆排序,大根堆 出来的是降序还是升序[] - 作业帮
明卓13034861678…… [答案] 堆作为满二叉树,应该是用数组来实现的那么root作为大根堆的最大元素位于data【0】,其他的元素不管此时做堆排序,删除root,保存在tmp变量中调整堆,那么原来的堆的大小减一,数组最后一位空出赋以tmp那么最大元素位于数组尾部以此类推...
@袁冠4778:请教数据结构 大根堆 排序问题 -
明卓13034861678…… 25 / \ 48 16/ \ / \ 35 79 82 23 / \ / 40 36 72 25 / \ 48 16/ \ / \ 40 79 82 23 / \ / 35 36 72 25 / \ 48 82/ \ / \ 40 79 16 23 / \ / 35 36 72 25 / \ 79 82/ \ / \ 40 72 16 23 / \ / 35 36 48 82 / \ 79 25/ \ / \ 40 72 16 23 / \ / 35 36 48 结束
@袁冠4778:请教数据结构 大根堆 将序列 调整为大根堆排序,求教(25,48,16,35,79,82,23,40,36,72) - 作业帮
明卓13034861678…… [答案] 25 / \ 48 16/ \ / \ 35 79 82 23 / \ / 40 36 72 25 / \ 48 16/ \ / \ 40 79 82 23 / \ / 35 36 72 25 / \ 48 82/ \ / \ 40 79 16 23 / \ / 35 36 72 25 / \ 79 82/ \ / \ 40 72 16 23 / \ / 35 36 48 82 / \ 79 25/ \ / \ 40 72 16 23 / \ / 35 36 48 结束
@袁冠4778:有关堆排序 -
明卓13034861678…… 分为大根堆和小根堆,也就是画成二叉树的样子,大根堆顾名思义就是大的在上面小的在下面,小根堆则相反,而且两者都是从左子树的叶子结点进行遍历,找以叶子结点的那一分支进行比较
@袁冠4778:堆的建立过程和排序 -
明卓13034861678…… 我排序的过程,跟你不一样,不过结果是对的.先把数据构建成最大堆.就是根节点比它的2个子节点要大. 56 50 48 这就市最大堆 你的原数据 46 79 56 38 40 84 84比它的根大,所以84跟56换 46 79 84 38 40 56 38和40都比它的根节点79...
@袁冠4778:堆排序的简介 -
明卓13034861678…… 堆排序利用了大根堆(或小根堆)堆顶记录的关键字最大(或最小)这一特征,使得在当前无序区中选取最大(或最小)关键字的记录变得简单.(1)用大根堆排序的基本思想 ① 先将初始文件R[1..n]建成一个大根堆,此堆为初始的无序区 ② 再将...
@袁冠4778:堆排序问题 -
明卓13034861678…… 不知道你是递增排序还是递减排序, 如果是递增排序,则初始堆为大根堆,初始化调整后的排列是这样的:146, 79, 84, 38,40,56 如果是递减排序,则初始堆为小根堆,初始化调整后的排列是这样的:38, 40,56,79,146,84 都不是你的答案 是否是递增排序调整为初始堆后,第一趟排序的结果,这时倒是最后一个元素就是146