Я посмотрел на реализацию QuickSort, и я видел, что все веб-сайты имеют такое определение:реализация QuickSort ниже равна
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);
}
Я хочу спросить вас о время (я < = J), почему может 't это просто while (i < j), потому что он сравнивает тот же элемент массива, я провел несколько тестов и работает без равных. Учитывая тот факт, что все реализации одинаковы, он должен иметь смысл, но я не знаю, какой из них действителен.
Почему вы твердо верите выше (i <= j) правильно? просто интересно, есть ли у вас источник из-за недостатка. – Sean83
первые три источника, которые я нашел, имеют эту проверку i <= j, поэтому я предположил, что это правильный способ ее реализации. – Mike