📅  最后修改于: 2023-12-03 14:57:59.325000             🧑  作者: Mango
本文将为程序员介绍适用于QuickSort的Java程序,详细阐述程序的实现过程和使用方法。
我们先来看一下QuickSort算法的实现过程:
public void quickSort(int[] arr, int low, int high) {
if (low < high) {
int pivot = partition(arr, low, high);
quickSort(arr, low, pivot - 1);
quickSort(arr, pivot + 1, high);
}
}
public int partition(int[] arr, int low, int high) {
int pivot = arr[low];
while (low < high) {
while (low < high && arr[high] >= pivot) {
high--;
}
arr[low] = arr[high];
while (low < high && arr[low] <= pivot) {
low++;
}
arr[high] = arr[low];
}
arr[low] = pivot;
return low;
}
上述代码实现了QuickSort算法的核心部分,即分治思想的实现。其中,quickSort
方法用于分解问题;partition
方法用于分治过程中的处理。
此外,为了减小代码复杂度,我们可以将以上代码进行封装,实现更为优雅的代码:
public static void sort(int[] arr) {
quickSort(arr, 0, arr.length - 1);
}
private static void quickSort(int[] arr, int left, int right) {
if (left < right) {
int pivotIndex = partition(arr, left, right);
quickSort(arr, left, pivotIndex - 1);
quickSort(arr, pivotIndex + 1, right);
}
}
private static int partition(int[] arr, int left, int right) {
int pivot = arr[left];
int l = left + 1;
int r = right;
while (l <= r) {
if (arr[l] < pivot && arr[r] > pivot) {
swap(arr, l++, r--);
}
if (arr[l] >= pivot) {
l++;
}
if (arr[r] <= pivot) {
r--;
}
}
swap(arr, left, r);
return r;
}
private static void swap(int[] arr, int i, int j) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
使用以上的适用于QuickSort的Java程序时,只需要在需要进行排序的代码中先进行导入:
import static quicksort.Quicksort.sort;
之后便可使用以下方法进行排序:
int[] arr = {5, 9, 3, 7, 2, 8, 4, 1, 0, 6};
sort(arr);
System.out.println("排序结果为:" + Arrays.toString(arr));
输出结果为:
排序结果为:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
以上的程序实现及使用方法旨在帮助程序员更加顺利地应用QuickSort算法,如果您有其他的实现或改进方法,欢迎在评论中分享交流。