关键字:基准,递归,小《=基准《=大
思想:分治思想。
算法:
1、取一个数为基准记录为base(一般为待排序第一个值),
2、从右边(right)查找比base 小的数据,并将该数据赋值到 base 位置
3、从左边(left)开始查找比base大的数据,将数据赋值到 上一步骤中的right位置
重复2、3 直到 不满足 left
4、分治,将base的左边作为一个未排序序列,右边一个未排序序列,递归调用 1、2、3
5、递归结束条件--》未排序队列长度等于1;
上代码
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);
}
}
}