【发布时间】:2018-04-13 19:15:48
【问题描述】:
我的快速排序算法没有返回正确的输出。我的输出只是正确位置的枢轴元素和左侧小于枢轴元素的元素和右侧大于枢轴元素的元素。
import java.util.Timer;
class QuickSort {
public static void quicksort(int[] array, int left, int right) {
if (left < right) {
int q = partition(array, left, right);
quicksort(array, left, q - 1);
quicksort(array, q + 1, right);
}
}
public static int partition(int[] array, int start, int end) {
int x = array[end];
int i = start - 1;
int temp = 0;
for (int j = start; j < end - 1; j++) {
if (array[j] <= x) {
i++;
temp = array[j];
array[j] = array[i];
array[i] = temp;
}
}
temp = array[end];
array[end] = array[i + 1];
array[i + 1] = temp;
return i + 1;
}
public static void main(String[] args) {
int[] array = { 2, 8, 7, 1, 3, 5, 6, 4 };
long totalTime = 0;
System.out.println("Unsorted array");
for (int i = 0; i < array.length; i++)
System.out.print(array[i] + " ");
System.out.println();
long startTime = System.currentTimeMillis();
quicksort(array, 0, array.length - 1);
long endTime = System.currentTimeMillis();
totalTime = endTime - startTime;
System.out.println("Total time taken by the algorithm " + totalTime);
System.out.println("Sorted array");
for (int i = 0; i < array.length; i++)
System.out.print(array[i] + " ");
}
}
请告诉我我的错误并更正我的代码。 谢谢。
【问题讨论】:
-
获取实施失败的示例。不如用这个例子调试代码找出原因。