JAVA實現快速排序演算法

2021-08-20 07:12:45 字數 1238 閱讀 3128

排序快速演算法的英文

氣泡排序

的改進,比起氣泡排序,快速排序演算法的速度要快了很多

;快速排序演算法的原理:

若有乙個陣列為a,長度為n;獲取乙個key(一般是陣列的第乙個元素),設定兩個引數(i,j)中,i = 0,j = n-1;

先從j開始往前搜尋(j--),如果a [j]>key,則將a [j]的中的值賦給a [i],即將小於鍵的值放到前面;

上述執行一遍後再從我開始往後搜尋(i ++),如果a [i]>key,則將a [i]中的值賦給a [j],即將大於鍵的值放到後面去;

迴圈執行,最後的到的陣列會以鍵值為分界將整個陣列分成兩部分,前半部分的值都是小於關鍵的,後半部分的值大於金鑰;

特別注意,排序完以後的陣列並不是從小到大的,還需要使用遞迴將整個陣列繼續排序才能得到乙個從小到大的陣列;

快速排序的原理上面已經提到了,接下來就是一些簡單的**,我們首先需要定義乙個方法,傳入3個引數,這裡需要傳入乙個陣列,

public void sort(int a,int i,int j)

這裡i = 0,j = a.length-1;在方法裡面我們還需要定義乙個引數,key= a [i];然後就可以開始我們的演算法了

public static void sort(int a,int i, int j)   

if (a[end] < key)

// 找到第乙個大於key的值(從前往後),進行值互換。

while (start< end && a[start] <= key)

if (a[start] > key)

} if (start > i)

if (end< j)

}

然後我們只需要在main方法中呼叫就可以了

public static void main(string args) ;  

// 第乙個

int i = 0;

// 最後乙個

int j = a.length - 1;

// 呼叫排序的方法

sort(a,i,j);

// 輸出

for (int k : a)

}

這樣我們就可以得到乙個排序好了的陣列了

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

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

Java實現快速排序演算法

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

java實現快速排序演算法

快速排序是應用很廣泛的排序演算法。主要原因是它實現簡單 適用於各種不同的輸入資料且在一般應用中比其他排序演算法都要快得多。快速排序主要思想就是當兩個子陣列都有序時整個陣列也就自然有序了。而這個過程就是先選出乙個基準數,一般都選第乙個,然後基準數的左邊都是小於基準數的,基準數的右邊都是大於基準數的。然...