public static int partition(int array,int lo,int hi)
array[lo]=array[hi];
while(array[lo]<=key&&hi>lo)
array[hi]=array[lo];
}array[hi]=key;
return hi;
}public static void sort(int array,int lo ,int hi)
int index=partition(array,lo,hi);
sort(array,lo,index-1);
sort(array,index+1,hi);
}快速排序的時間複雜度為o(nlogn)
對於基準位置的選取一般有三種方法:固定切分,隨機切分和三取樣切分。固定切分的效率並不是太好,隨機切分是常用的一種切分,效率比較高,最壞情況下時間複雜度有可能為o(n2
).對於三數取中選擇基準點是最理想的一種
資料結構之排序演算法 快速排序 java
5快速排序 快排 public class quicksort partition a,0,a.length 1 print a test public void testquicksort quicksort a,0,a.length 1 print a public void quicksort...
java資料結構與演算法 快速排序
該方法的基本思想是 1 先從數列中取出乙個數作為基準數。2 分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。3 再對左右區間重複第二步,直到各區間只有乙個數。雖然快速排序稱為分治法,但分治法這三個字顯然無法很好的概括快速排序的全部步驟。因此我的對快速排序作了進一步的說明 ...
資料結構 排序 快速排序
對序列 47,31,83,91,57,18,96,16 進行快速排序 首元素為基準 第二趟排序結果是 正確答案 b 你的答案 c 錯誤 18 31 16 47 57 91 96 83 16 31 18 47 57 91 96 83 16 18 31 47 57 91 96 83 16 18 31 4...