在Java中实现快速排序算法的函数方法
发布时间:2023-07-04 21:21:04
快速排序(QuickSort)是一种常用的排序算法,其基本思想是选择一个基准元素,将数组分成左右两部分,左边的元素都小于等于基准元素,右边的元素都大于等于基准元素,再分别对左右两部分进行递归排序。
下面是在Java中实现快速排序算法的函数方法的代码:
public class QuickSort {
// 快速排序入口
public void quickSort(int[] arr) {
if (arr == null || arr.length == 0) {
return;
}
quickSort(arr, 0, arr.length - 1);
}
// 快速排序递归函数
private 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); // 递归排序右子数组
}
}
// 划分函数(选取基准元素并排序)
private 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;
}
// 测试
public static void main(String[] args) {
int[] arr = {5, 3, 8, 4, 2, 7, 1, 6};
QuickSort quickSort = new QuickSort();
quickSort.quickSort(arr);
for (int num : arr) {
System.out.print(num + " ");
}
}
}
以上代码中,quickSort方法是快速排序的入口,partition方法是划分函数,将数组分成左右两部分,low表示数组起始位置,high表示数组结束位置。在partition函数中,首先选取第一个元素作为基准元素,然后通过两个指针从两端开始向中间移动,交换比基准元素大和小的元素位置,直到两个指针相遇,将基准元素放到正确位置。
在quickSort递归函数中,首先判断是否需要继续递归,然后调用partition函数将数组分成左右两部分,并依次使用递归对左右两部分进行排序。
以上是Java中实现快速排序算法的函数方法的代码,可以在主函数中测试其正确性。
