快速排序的JAVA實現和效能分析

2021-07-02 13:19:36 字數 768 閱讀 6283

package sort;
//快速排序是不穩定的排序。

//快速排序的時間複雜度為o(nlogn)。

//當n較大時使用快排比較好,當序列基本有序時用快排反而不好。

public class quicksort ;

system.out.println("排序之前:");

for (int i = 0; i < a.length; i++)

//快速排序

quick(a);

system.out.println();

system.out.println("排序之後:");

for (int i = 0; i < a.length; i++)

}//快排入口方法,傳入形參---要排序的陣列

private static void quick(int a)

}//遞迴呼叫

private static void quicksort(int a, int low, int high)

a[low] = a[high]; //從high開始向左掃瞄,遇到比low元素小的(此high下標暫且存在high中),將其存入low位置。原a[low]儲存在tmp中

while(low

基本思想:選擇乙個基準元素,通常選擇第乙個元素或者最後乙個元素,通過一趟掃瞄,將待排序列分成兩部分,一部分比基準元素小,一部分大於等於基準元素,此時基準元素在其排好序後的正確位置,然後再用同樣的方法遞迴地排序劃分的兩部分。

圖例:

排序 快速排序(java實現)

快速排序是一種非常高效的排序演算法,它採用了 分而治之 的思想,把大的拆分成小的,小的再拆分為更小的。其原理如下 對於給定一組記錄,通過一趟排序後,將原序列分為兩部分,其中前一部分的所有記錄都比後一部分的所有記錄小,然後再依次對前後兩部分的記錄進行快速排序,遞迴該過程,直到序列中所有的記錄均為有序為...

快速排序的Java實現

之前整理過乙份學習筆記放到了部落格上,但是演算法是借用了他人的成果,是看了網上多篇文章之後又寫出來的。寫完的時候還遇到一點小問題,最終的糾正方式也是參考網路文章。今天再次整理一下相關的內容,主要是針對自己曾經有一點迷惑的地方進行思考總結。之前的 packagequicksortpack public...

快速排序的java實現

快排原理 在要排的數 比如陣列a 中選擇乙個中心值key 比如a 0 通過一趟排序將陣列a分成兩部分,其中以key為中心,key右邊都比key大,key左邊的都key小,然後對這兩部分分別重複這個過程,直到整個有序。整個快排的過程就簡化為了一趟排序的過程,然後遞迴呼叫就行了。一趟排序的方法 1,定義...