Can you guys please explain this quicksort method? I am trying to implement this code into my program, but the author left no explanation on what it does, or how it does it. Also note that I am in highschool so please try to keep it understandable.
What I DO know about this is that it quicksorts a 2-D array. I also know that it uses recursion to perform its quicksort. Unfortunately, thats it. Any help would be appreciated.
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;
}
}