Java實現常見的排序演算法之快排(快速排序)

2021-07-11 18:28:57 字數 938 閱讀 4753

對於快排,無論是看別人面經,還是自己親身的筆試面試經歷,都是經常會遇到的。所以在此,本人僅通過部落格的形式記錄下來,以便自己查閱,或給其他有需要的人用作參考也好。

public class sortmethods ;

int datasorted = quicksort(testdata, 0, testdata.length-1);

for(int a : datasorted)

system.out.println("比較次數:" + cnt);

} /**

* 快速排序

*/static int cnt = 0;

private static int partition(int data, int low, int high)

data[low] = data[high];//(此時因low=high或data[high]key)將low下標處的數賦給high下標處的數,保證data[high]>key

} data[low] = key;

return low;

} public static int quicksort(int data, int low, int high)

return data;

}

快排的時間複雜度,最好的情況下是o(nlgn),最壞的情況下位o(n^2)。當待排序資料基本無序時,快排的速度是最快的,而當資料是基本有序時,其反而是最慢的。如上,雖然可能通過累加比較次數的方法來比較其在資料有序或無序的不同情況下的時間複雜度可能有點不嚴謹,不過對我來說是最直觀的。如上面通過排序不同資料得出的結果,資料為基本無序的資料①時cnt的值為16,基本有序的資料②為18,已經排序完畢的③時為28,這個結果也證實了前面所說:「」當待排序資料基本無序時,快排的速度是最快的,而當資料是基本有序時,其反而是最慢的。」

ps:以上若有不妥,謝謝指出

常見的排序演算法 Java實現

最近在準備面試,回顧了一下之前學習的幾種排序演算法,並參考材料嘗試實現。現在此記錄一下,以後忘了可以回顧。直接貼上 有許多值得優化的地方 package hpp.sort created by hpp on 2017 8 4.public class sorttest insertsort arra...

常見排序之Java實現

public class test system.out.println arrays.tostring arrs mergesort arrs,0,arrs.length 1 quicksort arrs,0,arrs.length 1 heapsort arrs system.out.print...

常見排序之Java實現

public class test system.out.println arrays.tostring arrs mergesort arrs,0,arrs.length 1 quicksort arrs,0,arrs.length 1 heapsort arrs system.out.print...