heapsort 相关问题

Heapsort是一种有效的基于比较的排序算法,它将输入分为排序和未排序部分,并通过提取最大元素并将其移动到排序部分来迭代缩小未排序部分。运行时间为O(n log n)。

如何解决Heapify重复向后替换的递归问题?

所以我正在尝试解决复发问题 所以我有: T(n) <= T(2n/3) + O(1) We can write: <= T(2n/3) + O(1) <= T(4n/9) + 2O(1) ... <= T((2/3)^i * n) + i*O(1) So if we solve for i (2...

回答 1 投票 0

堆排序ArrayIndexOutOfBoundsException

我正在研究Heapsort项目,但我不断收到错误 线程主异常 Java.lang.ArrayIndexOutOfBoundsException:10 在 ReplacementSelection.swap(ReplacementSelection.java:42) 在

回答 2 投票 0

为什么堆排序中是(n/2)-1?

在堆排序中,在 for 循环中重新排列数组时,为什么我们需要 i=n/2-1 并且我检查了 n/2 也按预期工作。 // 构建堆(重新排列数组) 对于 (int i = n / 2 - 1; i >= 0;...

回答 3 投票 0

在堆排序中弹出 3 个元素

如果我还想找到第三大元素然后弹出3,我该如何实现? 包cs.ds.main; 导入java.util.HashSet; 导入 java.util.Random; 导入java.util.Set; 公开课Hea...

回答 1 投票 0

使用 heapq 对元组进行排序

我正在使用 heapq 模块对元组列表进行堆排序。 但是,对于第一个元组的键上的绑定,heapq 不会自动回退到下一个键: 导入堆 x = [(3, 0, 0), (6, 0, 1), (2, 1, 0), (3,...

回答 3 投票 0

为什么堆几乎是完全二叉树?

我在很多书中读到,二叉堆几乎是完整的二叉树。据我所知,几乎完全二叉树的最后第二层始终未填充,并且从左到右。并且,完整的二进制...

回答 1 投票 0

Javascript 中的迷你堆排序实现

我想使用MinHeap在Javascript中实现堆排序算法。 但代码输出不正确... 我的数据集有 1000 个数字,我正在尝试堆积所有数据。 从 'fs... 导入 * as fs...

回答 1 投票 0

从头开始实现堆排序

导入java.util.Arrays; 导入 javax.management.RuntimeErrorException; 公共类我的堆{ 公共静态无效主(字符串参数){ MyHeap minHeap = new MyHeap(10, true); 最小堆。

回答 1 投票 0

找到插入最小堆的最后一个元素?

我正在考虑这个挑战: 考虑最小堆 [15, 27, 33, 39, 66, 39, 47, 58, 51],它是通过将值重复插入到空堆中而构建的。哪个元素不可能是最后一个元素...

回答 1 投票 0

C 中的警告:从不兼容的指针类型传递参数

我正在尝试在 C 中实现 extract_heap() 。我想通过函数将变量大小(堆的)作为指针传递。代码生成一些警告,如下所示: extract_max.c:在福...

回答 1 投票 0

关于霍尔堆排序的问题

如果我没记错的话,堆排序的当前实现使用称为树排序的修改版本。我试图理解威廉姆斯编写的原始算法。 OUTHEAP 被 SWO 调用...

回答 1 投票 0

如何实现堆排序?

我的堆排序代码没有做它应该做的事。 例如 h = MaxHeap([1,9,5,7,8]) 堆排序(h) h.keys # [9 8 5 7 1] 显然没有排序。我只是找不到我的错误。我已经尝试了很多东西......

回答 0 投票 0

inplace heap sort down heapify 是错误的

我没有得到正确的输出,因为 down heapify 部分是错误的所以请纠正我 并提前致谢。 第 1 部分 upheapify 工作正常 part2 downheapify 是错误的 公共静态 ...

回答 0 投票 0

堆排序法的比较和交换次数

我们已经在C中实现了heapsort排序算法来对结构的数据进行排序。我需要显示已经进行的比较次数和交换次数,以便

回答 1 投票 0

Max Heapify代码.在python中从0开始索引为1?

def max_heapify(arr, n, i): largest = i left = 2*i right = 2*i + 1 while left <= n and arr[left] > arr[maximum]: largest = left while right <= n and arr[right] ...。

回答 1 投票 0

我不能用time(NULL)函数检查数组排序的时间。

我必须用堆栈算法检查数组排序的时间,我必须找到这个数组中的元素数,而时间至少是1秒。为了检查它,我必须使用time.h中的time()函数...。

回答 1 投票 0

堆排序,数组的索引从1开始而不是0

#include int swap(int * a,int * b){int tmp; tmp = * a; * a = * b; * b = tmp; } void heapify(int a [],int n,int i){int maximum = i; int left = 2 * i + 1; int right = 2 * i + 2; while(left <= n && ......>

回答 1 投票 0

如何在堆排序中使用用户输入数组

我是初学者,如果这是一个愚蠢的问题,请原谅。我正在尝试编写从数组中的用户输入的堆排序并将其排序的堆排序方法,但是我找不到实现用户输入的方法...

回答 1 投票 0

清除堆的时间复杂度是多少?

我在Google上搜索了很多网站,他们都说“清除堆的时间复杂度为O(n log n)。”原因是:交换尾节点的根成本为O(1)。将“新根目录”交换到...

回答 1 投票 0

试图了解最大堆大小

我尝试观看http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/lecture-videos/lecture-4-heaps -and-heap-sort /以了解堆和...

回答 2 投票 2

© www.soinside.com 2019 - 2024. All rights reserved.