3 1 快速排序的單邊迴圈 遞迴

2021-10-08 17:46:40 字數 883 閱讀 9816

1.基準元素pivot/mark 指標

mark指標代表的是小於基準元素的區域邊界

2.遍歷到的元素大於基準元素,繼續遍歷;

3.遍歷到的元素小於基準元素,mark指標向右移動一位(意味著多了一位比基準元素小的元素,所以pivot的區域邊界增大了),最新遍歷到的元素和mark位置的元素交換位置,因為該元素屬於小於pivot的區域。

4.這一輪宣告結束時,mark 左側都是比它小的,右側都是比它大的。再分成兩部分進行遞迴,就完成了單邊迴圈的快速排序。

public

static

void

quicksort

(int

arr,

int startindex,

int endindex)

//得到基準元素的位置

int pivorindex=

partition

(arr,startindex,endindex)

;//根據基準元素,分為兩部分進行遞迴

quicksort

(arr,startindex,pivorindex-1)

;quicksort

(arr,pivorindex+

1,endindex);}

private

static

intpartition

(int

arr,

int startindex,

int endindex)

} arr[startindex]

=arr[mark]

; arr[mark]

=pivot;

return mark;

}

遞迴 快速排序 快速排序

問題描述 用遞迴來實現快速排序 quick sort 演算法。快速排序演算法的基本思路是 假設要對乙個陣列a進行排序,且a 0 x。首先對陣列中的元素進行調整,使x放在正確的位置上。同時,所有比x小的數都位於它的左邊,所有比x大的數都位於它的右邊。然後對於左 右兩段區域,遞迴地呼叫快速排序演算法來進...

快速排序 雙邊掃瞄與單邊掃瞄的實現

快速排序 時間複雜讀o n logn 最差o n 2 平均o n logn 主要思想是選取乙個標誌位,大於標誌位的放到右邊,小於標誌位的放到左邊,在以標誌位為分割,分而制之,左遞迴,右遞迴,直到完成。快速排序的思想 雙邊掃瞄 快速排序就像乙個資料快,前後各有乙個下標 指標 i j,隨機選取 此處取下...

快速冪 迴圈 遞迴

目錄其實原理很簡單,有初一的學歷就好,你只需要知道 k為正整數 x2k xk xk x2k 1 xk xk x 任何數的0次方都為1 除0外 任何數的1次方都為它本身 至於為什麼,問數學老師去 然後一直遞迴下去即可 計算xk int poww int x int k 這個稍微有億一點點複雜 你需要知...