① 取基准值
② 按照基准值将区间划分成左右两部分
③ 递归排列基准值左半侧以及右半侧(升序/降序)
快排应用场景:数据量大比较无序
public static void quickSort(int[] array, int left, int right) {
if (right - left > 1) {
//说明区间中至少有两个元素
// 按照基准值对[left,right)区间进行分割l
int div = partion(array, left, right);
//递归排基准值左半侧
quickSort(array, left, div);
//递归排基准值右半侧
quickSort(array, div + 1, right);
}
}
public static void swap(int[] array,int left,int right){
int temp=array[left];
array[left]=array[right];
array[right]=temp;
}
public static void main(String[] args) {
int[] array={
3,6,9,4,1,5,2,0,8,7};
quickSort(array,0,array.length);
}
}
后面只提供方法代码以供参考
Hoare 、挖坑法、 前后索引法
① 定义首尾两个的下标分别为 begin,end
② 让begin从前往后找比基准值大的元素,找到后停止;end从后往前找比基准值大 的元素,找到后停止
③ 将begin和end标记的元素进行交换
public static int partion(int[] array, int left, int right) {
int begin = left;
int end = right - 1;
int key = array[end];
while (begin < end) {
</