在Java中实现快速排序算法的核心函数
发布时间:2023-07-03 12:47:20
快速排序是一种常用的排序算法,其核心思想是对待排序的数组选择一个基准元素,然后将数组分成小于基准元素和大于基准元素的两部分,再对这两部分分别进行快速排序,递归实现整个排序过程。
在Java中实现快速排序算法的核心函数如下:
public static void quickSort(int[] arr, int low, int high) {
if (arr == null || arr.length == 0) {
return;
}
if (low >= high) {
return;
}
// 选择基准元素
int pivot = arr[low + (high - low) / 2];
// 将数组分成小于基准元素和大于基准元素的两部分
int i = low;
int j = high;
while (i <= j) {
while (arr[i] < pivot) {
i++;
}
while (arr[j] > pivot) {
j--;
}
if (i <= j) {
swap(arr, i, j);
i++;
j--;
}
}
// 递归地对两部分进行快速排序
if (low < j) {
quickSort(arr, low, j);
}
if (high > i) {
quickSort(arr, i, high);
}
}
private static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
在上述代码中,我们首先对输入的数组是否为空或者长度为0做了判断,如果是,则直接返回。然后,我们判断low是否大于等于high,如果是,则直接返回,表示已经排好序了。
接下来,我们选择一个基准元素,这里采用的是取数组中间位置的元素。然后,我们使用两个指针i和j,分别从数组的两端向中间移动,如果arr[i]小于基准元素,则i向后移动;如果arr[j]大于基准元素,则j向前移动。直到i和j相遇,此时将i位置的元素与j位置的元素交换,然后i向后移动,j向前移动。
接下来,我们递归地对两部分分别进行快速排序。递归的结束条件是low大于等于j或者high小于等于i。
最后,我们定义了一个辅助函数swap,用来交换数组中两个位置的元素。
这就是在Java中实现快速排序算法的核心函数。快速排序是一种高效的排序算法,其平均时间复杂度为O(nlogn),最坏情况下的时间复杂度为O(n^2)。
