关键字:基准,递归,小《=基准《=大算法
思想:分治思想。ui
算法:code
一、取一个数为基准记录为base(通常为待排序第一个值),排序
二、从右边(right)查找比base 小的数据,并将该数据赋值到 base 位置递归
三、从左边(left)开始查找比base大的数据,将数据赋值到 上一步骤中的right位置队列
重复二、3 直到 不知足 left数据
四、分治,将base的左边做为一个未排序序列,右边一个未排序序列,递归调用 一、二、3sort
五、递归结束条件--》未排序队列长度等于1;static
上代码while
public static void main(String[] args) { int[] a = {1, 5, 88, 4, 5, 0, 84, 69, 12, 5, 10, 254}; System.out.println(Arrays.toString(a)); Quicksort(a, 0, a.length-1); System.out.println(Arrays.toString(a)); } public static void Quicksort(int[] a,int start,int end){ if(a!=null){ int base = a[start]; int left = start,right= end; while(left<right){ while(a[right]>=base&&left<right) right--; a[left] = a[right]; while(a[left]<=base&&left<right) left++; a[right] = a[left]; a[left] = base; } if(start<left-1){ Quicksort(a, start, left-1); } if(left+1<end){ Quicksort(a, left+1, end); } } }