package com.demo02; import java.util.Arrays; /** * 快速排序 */ public class QuickSort { public static void main(String[] args) { int[] arr=new int[]{4,123,213,21,3241,3231,32,3221,1}; quickSort(arr,0,arr.length-1); System.out.println(Arrays.toString(arr)); } public static void quickSort(int[] array,int start,int end){ if (start<end){ //标准数 int stard=array[start]; //记录需要排序的下标 int low=start; int high=end; //循环找比标准数大的数 和比标准数小的数 while (low<high){ //看右边的数是否比标准数大 while (low<high&&array[high]>=stard){ high--; } array[low]=array[high]; //看左边的数字是否比标准数小 while (low<high&&array[low]<=stard){ low++; } array[high]=array[low]; } //处理完后需要把标准数赋给所在位置的元素 array[low]=stard; //处理所有小的数字 quickSort(array,start,low); //处理所有大的数字 quickSort(array,low+1,end); } } }
递归实现,首先对数组分为左右两组,以基准数为标准,比基准数小的在左边,比基准数大的在右边,然后再进行组内排序