heapsort

    -3热度

    1回答

    如果我有此A = [4 2 8 6 5 3]和我请BuildHeap(A) BuildHeap(A){ heap_length[A] ← length[A] for i ← floor(length[A]/2) downto 1 do Heapify(A, i) } 它将建立像这样 4 2 8 6 5 3 或类似的: 8 6 4 2 5 3

    3热度

    1回答

    如何找到最大堆中1到n个不同元素中第3个最小元素的可能索引? 我知道最小的元素会在树叶中的任何地方。 第二小的将是从n/2到n的任何地方,大于3的时候n 但我不知道要计算第三小的值。有什么建议么?

    1热度

    1回答

    想知道如果我能得到一些heapsort实施快速帮助。我有它的工作和排序很好,但在输出它总是一切排序,除了第一个数字。这可能只是一个检查的地方,但我已经检查了我的代码,并尝试更改值,但没有产生我需要的结果。任何意见,我去哪里错了? 这里是我的源代码: code removed, problem was solved! 谢谢你们!

    2热度

    1回答

    我需要建立在C 一个“通用”堆排序我有包括比较功能的主要文件。本质上,数组的基地址,元素数量,每个元素的大小以及比较函数被传递到堆排序函数中。我遇到了两个问题,一个程序没有对它进行排序,所以我想知道是否有人可以看到代码有任何问题。两个1710元素后出现分段错误。 #include <stdio.h> #include <string.h> #include "srt.h" void sr

    0热度

    1回答

    我正在写一个函数来使用堆排序来排序数组。到目前为止,我有: template <typename Item, typename SizeType> void heap_sort(Item data[], SizeType size) { vector<int> v(data,data+size); SizeType unsorted = size; make_heap(v.begin()

    0热度

    2回答

    我正在为作业实现堆排序。我们必须按照她在课堂上使用她的伪代码的方式来做,否则我们不会得到信任。 即时得到一个运行时错误:围绕变量“heapArray” 堆栈已损坏。我和调试器一起玩,仍然无法弄清楚是什么导致了错误。我很确定它与HeapSort()函数中的For循环有关。谁能帮忙? void HeapSort(int heapArray[]) { int heap_size = SIZE

    -1热度

    3回答

    Im在我的算法类中为一个赋值实现了HeapSort,最后Im完成了,但由于某种原因,这个排序正在跳过我的数组中的第一个元素。 原始阵列:堆排序后 int heapArray[SIZE] = { 5 ,99, 32, 4, 1, 12, 15 , 8, 13, 55 }; 输出() 5 99 32 15 13 12 8 4 1 ㈣走过所有功能和不能找出为什么它的跳过第一个元素。谁能帮我吗?

    0热度

    1回答

    我试着用Google和wiki'ing这些问题,但似乎无法找到具体的答案。我发现的大部分内容都是用主定理证明的,但我希望能用更简单的方式记住那些简单英语的东西。此外,我不在学校,这些问题是面试。 MEMORY: 究竟是什么意思,以确定内存使用方面大O?例如,当你必须存储全部n个项目时,为什么认为heapsort与O(1)内存一起运行?是因为你只为堆创建了一个结构?还是因为你知道它的大小,所以你可以

    1热度

    2回答

    我对分析空间复杂性有点困惑。我不确定“算法占用额外空间”的含义。什么算作1的空间? 在这里的例子 int findMin(int[] x) { int k = 0; int n = x.length; for (int i = 1; i < n; i++) { if (x[i] < x[k]) { k = i; } }

    8热度

    1回答

    Quicksort在实践中胜过Heapsort。 Mergesort是3种(普通香草实现中)中唯一稳定的产品。所以它可以是快速排序或合并排序,根据手头情况(内存或外部排序等)使用,可以使用 因此,有一种情况是堆数据结构确实用于排序?无论我有多'谷歌'或试图想出应用程序,几乎总是选择合并/快速排序。我从来没有遇到过在我的职业生涯中实际使用堆排序的情况。出于好奇,实际上什么会是一个很好的用例(如果有的