package com.heima.paixu;
import java.util.Arrays;
public class QuickSort {
public static void main(String[] args) {
int[] a = {1, 2, 4, 5, 7, 4, 5 ,3 ,9 ,0,8,10,15,78,99,100,25,23,69,65,14,19};
// System.out.println(Arrays.toString(a));
quickSort(a);
System.out.println(Arrays.toString(a));
}
public static void quickSort(int[] a) {
if(a.length>0) {
quickSort(a, 0 , a.length-1);
}
}
//方法一
private static void quickSort(int[] a, int low, int high) {
if( low > high) { //1,找到递归算法的出口
return;
}
int i = low; //2, 存2
int j = high;
int key = a[low]; //3,设置标杆值key
//4,完成一趟排序
while( i < j) {
while(i<j && a[j] > key){ //4.1 ,从右往左找到第一个小于key的数
j--;
}
while( i<j && a[i] <= key) { // 4.2 从左往右找到第一个大于key的数
i++;
}
int temp = a[i];
a[i]=a[j];
a[j]=temp; //4.3 交换
}
int temp = a[i];
a[i] = a[low];
a[low] = temp; // 4.4,调整key的位置,即将a[i]与a[low]的值互换;
quickSort(a, low, i-1 ); //对key左边的数快排, 递归的思想
quickSort(a, i+1, high); //对key右边的数快排,递归的思想
}
}
快速排序
最新推荐文章于 2021-11-19 16:57:43 发布