Java函数使用实例:如何实现快速排序算法
发布时间:2023-07-02 18:16:45
快速排序是一种常用的排序算法,它的时间复杂度是O(nlogn)。它的基本思想是通过一趟排序将待排序序列分割成两个子序列,其中一个子序列的所有元素都比另一个子序列的所有元素小,然后再对这两个子序列分别进行快速排序,直到整个序列有序。
下面是一个用Java实现快速排序算法的函数示例:
public class QuickSort {
public static void quickSort(int[] arr, int low, int high) {
if (low < high) {
int pivotIdx = partition(arr, low, high);
quickSort(arr, low, pivotIdx - 1);
quickSort(arr, pivotIdx + 1, high);
}
}
private static int partition(int[] arr, int low, int high) {
int pivot = arr[low]; // 选择 个元素作为枢轴
int left = low;
int right = high;
while (left < right) {
// 从右往左找到 个比枢轴小的元素
while (left < right && arr[right] >= pivot) {
right--;
}
if (left < right) {
arr[left] = arr[right];
left++;
}
// 从左往右找到 个比枢轴大的元素
while (left < right && arr[left] <= pivot) {
left++;
}
if (left < right) {
arr[right] = arr[left];
right--;
}
}
// 将枢轴放在left和right相遇处
arr[left] = pivot;
return left;
}
public static void main(String[] args) {
int[] arr = {8, 2, 5, 1, 7, 9, 3, 6, 4};
quickSort(arr, 0, arr.length - 1);
System.out.println("排序结果:");
for (int num : arr) {
System.out.print(num + " ");
}
}
}
快速排序算法的核心在于partition函数,它通过不断移动left和right指针来找到枢轴应该放置的位置。在每次替换枢轴位置时,比枢轴小的元素都被移动到左边,比枢轴大的元素都被移动到右边。然后,将枢轴放在left和right相遇处,完成一次分割。
在快速排序函数中,首先判断low是否小于high,如果是,则选择一个枢轴,进行一次分割。然后,分别对枢轴左右两边的子序列进行快速排序。递归调用quickSort函数,直到low等于high,排序完成。
使用上述代码,可以对一个整型数组进行快速排序。代码中的main函数演示了对一个包含9个元素的数组进行排序,排序结果将会输出到控制台。
快速排序是一种高效的排序算法,它的实现相对简单,并且可以在大部分情况下都获得较好的性能。
