转载自:
https://blog.csdn.net/shujuelin/article/details/82423852
int[] arr={6,3,5,1,7,8,11,4,9};
正序排列。
1.首先拿到一个基准数,例如那数组第一个元素 6为基准数,
2.然后从左边第一个数开始跟基准数比较,从右边第一个数开始跟基准数比较。
3.从左边开始查找比6大的,从右边开始查找比6小的
4.两边都找到之后,将左右两边找到的数字互换位置,这样大的数字就被放在了右边,小的数字就放在了左边。
5.循环一轮之后,最终左右探测会遇到。这时候,需要把基准数和当前相遇的数字交换。
6.递归调用

package com.citi.test.demo; public class QuickSort1 { public static void quickSort(int[] arr,int low,int high){ int i,j,temp,t; i=low; j=high; if(i>j){ return; } temp=arr[low]; while(i<j){ //temp跟右边开始比较 while(temp<=arr[j]&&i<j){ j--; } while(temp>=arr[i]&&i<j){ i++; } if(i<j){ t=arr[i]; arr[i]=arr[j]; arr[j]=t; } } //表示i=j arr[low]=arr[i]; arr[i]=temp; //左半边数组执行快排 quickSort(arr, low, j-1); //右半边数组执行快排 quickSort(arr,j+1,arr.length-1); } public static void main(String[] args) { int[] arr={6,3,5,1,7,8,11,4,10,9}; quickSort(arr,0,arr.length-1); for(int i=0;i<arr.length-1;i++){ System.out.println(arr[i]); } } }