快速排序中的枢轴数

时间:2014-11-02 21:25:21

标签: java algorithm sorting quicksort

我有一个使用QuickSort算法对数组进行排序的代码。我的代码正确排序数字。但是,它无法打印在每个步骤中选择的枢轴。我想要做的是将枢轴存储在一个数组中,然后在一个函数中打印该数组的元素。在我看来,枢轴数最多等于数组-1的长度。因此,我声明NumberOfPivots数组的大小为 array.length-1,如下面的代码所示。计数表示所选枢轴的数量。然后我尝试在下面的分区方法中分配值。最后,通过使用WritePivots方法,我尝试打印枢轴,如下面的方法。当我运行代码时,NumberOfPivots数组的所有元素都返回为0.如何通过使用方法解决此问题并获得枢轴?

  int[] NumberOfPivots ;
   int count=0;
  public void QuickSorting(int[]array, int p, int r)
 {
    NumberOfPivots = new int[array.length-1];

    if(p<r)
    {
        int q = Partition(array,p,r);   
        this.QuickSorting(array,p,q);
        this.QuickSorting(array,q+1,r);

    }

} 

public  int Partition(int[] array, int p, int r) {

    int pivot = array[p];
    NumberOfPivots[count] = pivot;
    count++; }

public  void WritePivots()
{
    for(int k : NumberOfPivots)
        System.out.println(k);
}

1 个答案:

答案 0 :(得分:1)

NumberOfPivots = new int[array.length-1];

每次调用QuickSorting()时都会删除所有支点。在别处初始化数组(只有一次),它应该正常工作。

顺便说一句。请使用小写字母开始方法名称,看起来更好并且是标准的:)