排序算法(三)快速排序

关键字:基准,递归,小《=基准《=大算法

思想:分治思想。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);
            }
        }
    }