使用Java函数快速排序算法
发布时间:2023-09-21 06:59:45
快速排序是一种常用的排序算法,它的基本思想是通过将数组分成两部分,再对每部分进行排序,最终将整个数组排序。具体实现时,我们选定一个基准元素,通过一趟排序将数组分成两部分,递归地对两部分进行排序,最终得到有序数组。
下面是使用Java函数实现快速排序算法的示例代码:
public class QuickSort {
// 快速排序公共接口
public static void quickSort(int[] arr) {
if (arr == null || arr.length == 0) {
return;
}
quickSort(arr, 0, arr.length - 1);
}
// 快速排序具体实现
private static void quickSort(int[] arr, int start, int end) {
if (start >= end) {
return;
}
int pivot = partition(arr, start, end); // 划分操作,返回基准元素位置
quickSort(arr, start, pivot - 1); // 对基准元素左边的部分进行排序
quickSort(arr, pivot + 1, end); // 对基准元素右边的部分进行排序
}
// 划分操作
private static int partition(int[] arr, int start, int end) {
int pivot = arr[start]; // 选定基准元素为起始元素
int left = start;
int right = end;
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--;
}
}
arr[left] = pivot; // 将基准元素放到最终位置
return left;
}
}
以上代码中,quickSort函数是快速排序的入口,它首先判断数组的合法性,然后调用具体的快排实现函数quickSort(arr, 0, arr.length - 1)进行排序。
在quickSort函数中,partition函数用于执行划分操作,它选定起始元素作为基准元素 pivot,然后通过两个指针 left 和 right 分别从数组的两端向中间遍历,交换不符合要求的元素,直至两个指针相遇。最后将基准元素放到最终位置。然后,递归地对基准元素左边的部分和右边的部分进行排序,最终实现整个数组的排序。
使用这个快速排序函数,可以方便地对一个数组进行排序,时间复杂度为O(nlogn)。快速排序是一种非常高效的排序算法,在实际开发中经常使用。
