快速排序學習

2022-04-29 09:51:08 字數 1010 閱讀 4635

簡單原理:

快速排序是對氣泡排序的改進,用分而治之的思想,先找到乙個基準數,利用基準數進行一輪排序,將所有比它小的數都放在左邊,再將所有比它大的數都放在它右邊,

然後返回基準數的位置,進行下一輪排序,下一輪將分別對基準數左右兩邊進行排序,依次迴圈,直到最後排序完成。

**實現:

import

org.codewy.util.printutil;

/*** 快速排序 */

public

class

quicksort

}private

static

int partition(int source, int i, int

j)

//將找到的數與放到基準數的位置

if (i

//從左邊開始找到第乙個比基準數大的數

while (i < j && source[i] <=pointval)

//將找到的數放到上一步找到的val1之前的位置

if (i

}//將基準數放到陣列中,它左邊的數都比他小,右邊的數都比他大

source[i] =pointval;

//返回下一次迴圈的分界點

printutil.printintarr(source);//

列印每輪排序完後的狀態

return

i; }

public

static

void

main(string args) ;

qiucksort(source, 0, source.length-1);

printutil.printintarr(source);}}

輸出結果:

快速排序學習

快速排序利用了分治策略。分治策略可以分為3個步驟 對乙個典型的子陣列a p.r 進行快速排序的分治過程如下 快速排序的偽 如下 為了排序陣列a的全部元素,初始呼叫quicksort a,1,a.length 其中最關鍵的部分就是陣列的劃分partition,它實現了對子陣列a p.r 的原址重排。偽...

快速排序學習

下面是我寫的 public function quicksortme a array,left int,right int void 一般來說,插入排序都採用in place在陣列上實現。具體演算法描述如下 1.從第乙個元素開始,該元素可以認為已經被排序 2.取出下乙個元素,在已經排序的元素序列中從...

C 快速排序 隨機快速排序 學習記錄

都是網上的資源,侵刪。快速排序演算法以及其他演算法的時間以及空間複雜度 我認為比較好理解的思路 1 先從數列中取出乙個數作為基準數。2 分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。3 再對左右區間重複第二步,直到各區間只有乙個數。坑填數1 i l j r 將基準數挖出...