Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么';我的就地堆排序代码有什么问题_Java_Sorting_Heap_Heapsort - Fatal编程技术网

Java 什么';我的就地堆排序代码有什么问题

Java 什么';我的就地堆排序代码有什么问题,java,sorting,heap,heapsort,Java,Sorting,Heap,Heapsort,出于隐私原因删除的内容问题似乎是索引问题,左右索引似乎是错误的 final int left=root*2+1; 最终整数右=根*2+2 在这里,您应该将代码更改为 final int left=root*2; 最终整数右=根*2+1 还请记住,您必须从1而不是0为数组编制索引。对于基于0的数组,如此分配,我相信我的索引是正确的,是的,我希望从1为数组编制索引,但这需要我创建一个新数组,这会破坏分配的目的。另外,如果我的索引实际上是错误的,我认为它不会在任何情况下工作,但是当数组大小超过大约20

出于隐私原因删除的内容

问题似乎是索引问题,左右索引似乎是错误的

final int left=root*2+1;
最终整数右=根*2+2

在这里,您应该将代码更改为

final int left=root*2;
最终整数右=根*2+1


还请记住,您必须从1而不是0为数组编制索引。

对于基于0的数组,如此分配,我相信我的索引是正确的,是的,我希望从1为数组编制索引,但这需要我创建一个新数组,这会破坏分配的目的。另外,如果我的索引实际上是错误的,我认为它不会在任何情况下工作,但是当数组大小超过大约20时它就不起作用,对吗?使用0的索引是不正确的,因为当你试图通过2除以找到父方时,你会得到错误的父代,让我们考虑6的例子,当我们把它除以2时,我们得到3作为父函数,但是根据逻辑,它的父项应该是2(因为右=根* 2 +2==右=(2×2)+2)。我并没有完全按照你说的做,但是你说在堆构建中父代除以2会失败的那部分为我解决了这个问题。在构建堆时,我将索引调整为0索引,现在它工作得很好,因此感谢您的输入!没问题,很乐意帮忙。该问题的代码因“隐私原因”而被删除,并且有3票?