HeapSort返回错误的数组(Java)

时间:2018-10-12 20:43:38

标签: java sorting priority-queue heapsort max-heap

我的HeapSort返回的数组顺序不正确。 我原来的数组是{15,9,11,5,5,6,7},当运行heapSort方法时,我得到的数组是:{15,11,9,6,7,5}。

我打印出该方法以查看maxHeap所做的事情并得到:{15,9,11,5,5,6,7},当将其映射到二叉树中时,实际上就是maxHeap。这使我相信sorting方法或buildMaxHeap方法都有问题。

MainWindow

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的maxHeap方法,则应该将n参数作为最大索引。也就是说,maxHeap(arr, index, n)应该将项目放在arr[index]处并将其向下推入堆,但不要超过arr[n]

如果是这样,那么您的错误就在您的maxHeap方法的第二行:

n = arr.length;

您正在覆盖您传递的n参数的值。

您可以在sort方法中进行此调用:

    maxHeap(arr, index, 0);

因此,您要告诉maxHeaparr[index]处的项目向下推,但不能低于arr[0]。在我看来这将是一个问题,因为什么都不会动。

您需要花一些时间仔细检查代码。使用调试器进行单步调试非常有用。如果您不知道如何使用调试器,那么现在正是学习的最佳时机。