package com.zhebie.test;
import java.util.Arrays;
public class 快速排序 {
public static void main(String[] args) {
int[] a = new int[] {9,3,6,4,1,3,5,8,15,27,0};
int left = 0,right = a.length-1; //外部定义两边界
sort(a,left,right); //调用sort方法
System.out.println(Arrays.toString(a)); //打印最终整理的数组
}
private static void sort(int[] a,int left,int right) { //递归整理方法
if(left>right) return;
int key = divide(a,left,right);
sort(a,left,key-1);
sort(a,key+1,right);
}
private static int divide(int[] a,int left,int right) { //核心快速排序
/*
* 基准值、左下标、右下标
* 判断left<right
*/
int key = a[right];
while(left<right) {
while(left<right&&a[left]<key) left++; //控制左边与基准值的交换
if(left<right) {
int temp = a[left];
a[left] = a[right];
a[right] = temp;
right--;
}
while(left<right&&a[right]>key) right--; //控制右边与基准值的交换
if(left<right) {
int temp = a[left];
a[left] = a[right];
a[right] = temp;
left++;
}
}
return left;
}
}
Java:快速排序详解
最新推荐文章于 2022-03-17 15:27:12 发布