關鍵字:基準,遞歸,小《=基準《=大算法
思想:分治思想。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); } } }