java實現快速排序演算法

2021-07-24 10:55:40 字數 1338 閱讀 9203

快速排序是應用很廣泛的排序演算法。主要原因是它實現簡單、適用於各種不同的輸入資料且在一般應用中比其他排序演算法都要快得多。快速排序主要思想就是當兩個子陣列都有序時整個陣列也就自然有序了。而這個過程就是先選出乙個基準數,一般都選第乙個,然後基準數的左邊都是小於基準數的,基準數的右邊都是大於基準數的。然後以基準數為基準,切分出兩個陣列arr1和arr2。arr1中的數一定小於arr2的數。然後以此類推找基準數,排序,拆分陣列這三個步驟進行下去。最後拆分到只有乙個數時將不拆分了。

如圖為快算排序演算法的執行過程:

快速排序演算法是乙個原地排序(只需要乙個很小的輔助棧)

長度為n的陣列排序所需時間和n*lgn成正比。

缺點是非常脆弱,在實現時要非常小心才能避免低劣的效能。

主要是排序、切分兩個過程。然後應當注意切分時下標是否越界,終止迴圈的條件、以及終止遞迴的條件等。

public class quicksort 

int standrad=partition(arr, start, end);

inputsort(arr, start, standrad-1);

inputsort(arr, standrad+1, end);

} //切分

排序演算法 快速排序 java實現

它採用了一種分治的策略,通常稱為分治法。分治法思想 將原問題分解為若干個規模更小但結構與原問題相似的子問題。遞迴地解這些子問題,然後將這些子問題的解組合為原問題的解。對於陣列a,隨機選擇乙個元素作為基準數pos,一般為第乙個元素或最後乙個元素。將該陣列分為兩堆a 0,pos index 1 和 a ...

Java實現快速排序演算法

一 演算法描述 快速排序是對氣泡排序的一種改進。在氣泡排序中,記錄每次都是與相鄰位置上的資料作比較,因此每次只能移動乙個位置。而在快速排序中,記錄的比較和移動都是從兩端向中間進行的。其主要思想 首先在待排序陣列中選取乙個基準值 作為比較物件 然後利用基準值將待排陣列分成2個部分。基準值左邊的陣列的資...

JAVA實現快速排序演算法

排序快速演算法的英文 氣泡排序 的改進,比起氣泡排序,快速排序演算法的速度要快了很多 快速排序演算法的原理 若有乙個陣列為a,長度為n 獲取乙個key 一般是陣列的第乙個元素 設定兩個引數 i,j 中,i 0,j n 1 先從j開始往前搜尋 j 如果a j key,則將a j 的中的值賦給a i 即...