我有一个使用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);
}
答案 0 :(得分:1)
NumberOfPivots = new int[array.length-1];
每次调用QuickSorting()
时都会删除所有支点。在别处初始化数组(只有一次),它应该正常工作。
顺便说一句。请使用小写字母开始方法名称,看起来更好并且是标准的:)