Ich schaute über QuickSort Implementierung und ich habe gesehen, dass alle Websites haben diese Definition:QuickSort Implementierung niedriger gleich
private void quickSort(int [] array, int low, int high) {
int i = low; int j = high;
int pivot = array[low+(high-low)/2];
while (i <= j) {
while (array[i] < pivot) { i++; }
while (array[j] > pivot) { j--; }
if (i <= j) {
int temp = arr[i];
arr[i]=arr[j];
arr[j]=temp;
i++; j--;
}
}
if (low < j) quickSort(array, low, j);
if (i < high) quickSort(array, i, high);
}
Ich möchte Sie während fragen (i < = j), warum kann Es ist nur während (i < j), weil es das gleiche Array-Element vergleicht, habe ich einige Tests gemacht und es funktioniert ohne gleich. Die Tatsache, dass alle Implementierungen gleich sind, muss eine Bedeutung haben, aber ich weiß nicht, welcher der gültige Fall ist.
warum glauben Sie stark darüber, während (i <= j) richtig ist? nur zu fragen, ob Sie die Quelle von vielleicht einen Fehler haben. – Sean83
die ersten drei Quellen, die ich gefunden habe, haben diese Prüfung i <= j, also nehme ich an, das ist die richtige Art der Umsetzung. – Mike