我有这个非常奇怪的问题,我不知道为什么。
public class QuickSort
{
private int pivLocation;
private void quickSort(Integer[] input, int low, int high)
{
if(low < high)
{
this.pivLocation = partition(input, low, high);
quickSort(input, low, pivLocation-1);
quickSort(input, pivLocation+1, high);
Inversions.comparisons += high - low;
}
}
}
private int partition(Integer[] input, int low, int high)
{
int arrLength = high - low;
if(arrLength%2 == 0){
int pivot = input[low];
}
else
{
int pivot = 1;
}
int i = low+1;
for(int j=low+1; j<= high; j++ )
{
if(input[j]< pivot)
{
swap(input, j, i);
i++;
}
}
swap(input, low, i-1);
return i-1;
}
与编写完全相同的代码相比,这给出了不同的比较计数,但我没有使用字段变量,而是将 pivLocation 转换为局部变量。
int pivLocation = partition(input, low, high);
我不明白为什么。