当前位置: 代码迷 >> 综合 >> 快速排序算法的实现(递归)
  详细解决方案

快速排序算法的实现(递归)

热度:71   发布时间:2023-10-18 05:28:57.0

快速排序算法的实现(递归)

package com.dequ;import java.util.Arrays;public class TestQuickSort {private static void quickSort(int[] arr, int low, int high) {if (low<high) {// 分区操作,分成两个区,返回分区int index = partition(arr, low, high);// 对做分区快排quickSort(arr, low, index - 1);// 对右分区快排quickSort(arr, index + 1, high);}}public static void quickSort(int[] arr) {int low = 0;int high = arr.length - 1;quickSort(arr, low, high);}private static int partition(int[] arr, int low, int high) {// 指定左指针i和右指针jint i = low;int j = high;// 将第一个坑作为基准值,挖坑int x = arr[low];// 使用循环实现分区while (i < j) {// 从右向找第一个小于基准值的值arr[j]while (arr[j] > x && i < j) {j--;}// 将右侧找到的小于基准值的数填到左边坑中 ,i++,向中间移动一个位置。if (i < j) {arr[i] = arr[j];i++;}// 从左向右找第一个大于等于基准值的值arr[i]while (arr[i] < x && i < j) {i++;}// 将左侧找到的大于等于基准值的数填到右边坑中 ,j--,向中间移动一个位置。if (i < j) {arr[j] = arr[i];j--;}}// 使用基准值填坑,这就是基准的最终位置arr[i] = x;// 返回基准值的索引位置return i;}public static void main(String[] args) {// 创建一个数组int[] arr = { 7, 35, 45, 12, 85, 27, 49, 35, 29 };// 输出数组System.out.println(Arrays.toString(arr));// 数组排序quickSort(arr);// 输出排序后的数组System.out.println(Arrays.toString(arr));}}

 

  相关解决方案