排序算法(三)快速排序

關鍵字:基準,遞歸,小《=基準《=大算法

思想:分治思想。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);
            }
        }
    }
相關文章
相關標籤/搜索