參考:程式設計師小灰
快速排序簡稱快排,快速排序的平均時間複雜度為o(n log n),比起時間複雜度o(n^n)如氣泡排序,省了非常多的執行時間,故稱快速排序。
快速排序的思路是分治法。
此處將採用遞迴+while雙邊迴圈的方式 進行書寫快排**。
@test
public void doublelooptest() ;
doubleloop(array, 0, array.length-1);
system.out.println(arrays.tostring(array)); }
private void doubleloop(int array, int startindex, int endindex)
//獲得基準元素位置
int pivotindex = partition(array, startindex, endindex);
doubleloop(array, startindex, pivotindex-1);
doubleloop(array, pivotindex+1, endindex);
} private int partition(int array, int startindex, int endindex)
while(left測試用例:
演算法2 快速排序之雙邊迴圈法
快速排序之雙邊迴圈法 思路 1 先確定基準資料,左邊資料小於基準資料,右邊資料大於基準資料 2 根據基準資料將資料一分為二,再次遞迴執行雙邊迴圈法,其中左邊資料的右邊界為基準資料的索引號 1,右邊資料的起始邊界為基準資料的索引號 1 問題來了,如何確定基準資料?基準資料可以隨意定,但是關鍵是得到基準...
挖坑法之 快速排序
速度快,耗時小,面對資料量大的題目時可用快排 選取基準數,不斷 挖坑 填坑 使小於基準數的數全在其左邊,大於其的數全在右邊 最後陣列有序 參考鏈結 選擇最左端的數為基準數x 可將其視為乙個坑,可以將別的數填入這個坑 從右往左尋找小於x的數y,找到後填入坑,此時原基準數的坑被填,而y處產生新的乙個坑,...
演算法 之 快速排序法
快速排序演算法 通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以遞迴進行 關鍵點 遞迴,折半 通常取第乙個數為對比 時間複雜度 平均 n logn function sort half a...