你们能解释一下这个快速排序方法吗?我正在尝试将这些代码实现到我的程序中,但作者没有解释它的功能,或者它是如何实现的。还请注意,我在高中,所以请尽量保持可以理解。有人可以解释这种快速排序方法吗?
我所知道的是它快速排列了一个二维数组。我也知道它使用递归来执行它的快速排序。不幸的是,这就是它。任何帮助,将不胜感激。
public double[][] quicksort(double[][] array, int key, int down, int top) {
double[][] a = new double[array.length][2];
System.arraycopy(array, 0, a, 0, a.length);
int i = down;
int j = top;
double x = a[(down + top)/2][key];
do {
while (a[i][key] < x) {
i++;
}
while (a[j][key] > x) {
j--;
}
if (i <= j) {
double[] temp = new double[a[i].length];
for (int y = 0; y < a[i].length; y++) {
temp[y] = a[i][y];
a[i][y] = a[j][y];
a[j][y] = temp[y];
}
i++;
j--;
}
} while (i <= j);
if (down < j) {
a = quicksort(a, key, down, j);
}
if (i < top) {
a = quicksort(a, key, i, top);
}
return a;
}
}
严重:[谷歌](https://www.google.com/search?q=quicksort) –
你知道如何快速排序,一般来说,作品? –
这是一个很好的机会来处理你的代码调试技巧。看看它做了什么,在不同的地方打印出一些变量,逐步完成并根据需要添加自己的评论。这样做会让你成为一个更强大的程序员。 – Serdalis