有人可以解释为什么这个heapsort实现不起作用?

时间:2015-10-15 22:16:43

标签: c++ sorting heapsort clrs

我花了几个小时就完成了这个,但我是c ++面向对象编程的新手,所以可能一些函数参数没有按原样传递,但我找不到它。对于此代码,我得到以下输出:1 2 7 10 3 2 4 15

public static void shuffle(char[] array){
     Random generator = new Random(12345);
          long numberOfShufflesMultiplier = (long)Math.pow(array.length,4); //your variable
           for (long i=0; i<numberOfShufflesMultiplier; i++) {
             int s = generator.nextInt(array.length);
             int index = (int)(i%array.length);
             char temp = array[index];
             array[index] = array[s];
             array[s] = temp;
           }
         }

1 个答案:

答案 0 :(得分:1)

您在index函数中混淆了largestmaxHeapify。在第二个&#34;如果&#34;表达式,您应该将right_childlargest进行比较,而不是index,因为您需要从三个顶点中选择一个具有最大值的顶点:indexleft_childright_child

这是一行经过修正的代码:

if((right_child <= heap_size) && (arrayX[right_child] > arrayX[largest]))
  largest = right_child;