早上好。我制作了一个程序,在2000个项目的数组上实现了几种不同的排序方法,并产生了比较数量和数量。每种排序方法的交换。
当我选择quicksort方法时,它会给我这个输出:
“交流次数:1
比较次数:2
交换次数:1
比较次数:2
交换次数:1
比较次数:6
交换次数:1
比较次数:2
交换次数:1
...
...
快速分拣完成。
这是一个使用冒泡排序的例子,我希望输出为:
比较次数:1999
交换次数:0
气泡排序已完成。
我知道我需要移动比较&交换柜台,但我无法弄清楚在哪里移动它们以获得所需的结果。
有人可以帮忙吗?
我真的很感激!这让我开始香蕉。
以下是我的快速排序代码:
// QUICK SORT
public static void quickSort(AnyType[] array, int low, int high)
{
int i = low, j = high, comparisons = 0, exchanges = 0;
AnyType temp, pivot = array[(low + high)/2];
while (i <= j)
{
while(array[i].isLessThan(pivot))
{
i++;
comparisons++;
}
while(array[j].isBetterThan(pivot))
{
j--;
comparisons++;
}
if (i <= j) {
temp = array[i];
array[i] = array[j];
array[j] = temp;
i++;
j--;
exchanges++;
}
}
if (low < j)
{
quickSort(array, low, j);
}
if (i < high)
{
quickSort(array, i, high);
}
System.out.println("Number of comparisons: "+ comparisons);
System.out.println("Number of exchanges: "+ exchanges);
}
答案 0 :(得分:0)
您以递归方式调用quickSort()。对于每次迭代,它将在从后续调用返回时执行println代码。您需要确保打印代码仅在方法的最外层(第一次)迭代上执行。