快速排序 java實現

2021-09-10 09:18:16 字數 1646 閱讀 1602

快速排序使用分治的思想,通過一趟排序將待排序列分割成兩部分,其中一部分記錄的關鍵字均比另一部分記錄的關鍵字小。之後分別對這兩部分記錄繼續進行排序,以達到整個序列有序的目的。

快速排序的基本思想

首先在要排序的區域中選取乙個基準,而後將整個區域分成兩個分割槽,其中左分割槽中的元素均小於或者等於基準,右分割槽的元素均大於或者等於基準,而後通過遞迴呼叫快速排序的過程分別對兩個分割槽再次進行排序,最後將兩個分割槽產生的結果合併即可得到最後的排序序列。

但是選取基準有不同的方法,先介紹一下固定位置選取基準法

固定位置選取基準

每次都選取當前所排序區域最左邊的元素作為基準。

上圖啦~~

可以看到經過一次排序後,基準左邊的數都比基準小,基準右邊的數都比基準大!!!

然後再對基準左邊區域和右邊區域分布排序

遞迴實現

public class

quick

if(low >= high)

else

while

(low < high &

& array[low]

<= tmp)

if(low < high)}if

(low == high)

return low;}/

*** 時間複雜度:o(nlog2n)

* 空間複雜度:o(log2n)

* 不穩定

** @param array

* @param low

* @param high

*/ public static void quick(

int[

] array,

int low,

int high)

if(par < high -1)

}//遞迴實現

public static void quicksort(

int[

] array)

}

非遞迴實現

就是用棧來實現

看**啦…

以此類推,經過一系列出棧入棧直到棧為空,排序結束

public class

quick

if(low >= high)

else

while

(low < high &

& array[low]

<= tmp)

if(low < high)}if

(low == high)

return low;

}//非遞迴實現

public static void quicksort(

int[

] array)

if(par < high -1)

while

(top >0)

if(par < high -1)}}}

排序 快速排序(java實現)

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

Java實現快速排序

package com.handy.ds public class quicksort for int i 0 i a.length i system.out.print a i system.out.println quicksort qs new quicksort qs.quitsort a,...

java實現快速排序

快速排序是平均速度最快的排序演算法,他的平均時間複雜度 n log n 快速排序採用分治法來進行排序,首先先給出乙個陣列,在一開始隨意選擇乙個數pivot,已pivot作為這個陣列的分界點,把大於pivot的數放在右邊,小於pivot的數放在左邊,然後在已pivot的兩邊分界點,右進行一次上一次的操...