Итак, этот фрагмент кода является классом, который я использую для сортировки файла, содержащего список чисел. Кажется, все работает, за исключением того, что у меня проблемы с программой, отображающей количество обменов и сравнений.
public class IntQuickSort {
private static void swap(int array[], int a, int b) {
int temp;
temp = array[a];
array[a] = array[b];
array[b] = temp;
}
public static void quicksort(int array[], int start, int end) {
int pivotPoint;
if (start < end) {
pivotPoint = partition(array, start, end);
quicksort(array, start, pivotPoint - 1);
quicksort(array, pivotPoint + 1, end);
}
}
private static int partition(int array[], int start, int end) {
int pivotValue;
int pivotIndex;
int mid;
int swapAmount = 0;
int compare = 0;
mid = (start + end) / 2;
swap(array, start, mid);
pivotIndex = start;
pivotValue = array[start];
for (int scan = start + 1; scan <= end; scan++) {
compare++;
if (array[scan] < pivotValue) {
pivotIndex++;
swap(array, pivotIndex, scan);
swapAmount++;
}
}
swap(array, start, pivotIndex);
System.out.println("Quick sort");
System.out.println("Comparisons " + compare);
System.out.println("Swaps " + swapAmount);
return pivotIndex;
}
}
Таким образом, подкачка и сравнения в настоящее время находятся в разделе разделов кода. Однако перестановки и сравнения, кажется, зацикливаются, когда я пытаюсь их отобразить, и они не сохраняют свои значения.