選擇問題 模擬快排

2021-09-08 20:01:52 字數 529 閱讀 5350

給定n個元素和乙個整數k(1 <= k <= n),找出這n個元素中的第k小的元素

將陣列a[p,r]劃分成a[p,q]和a[q+1,r],是的a[p,q]中的每個元素都不大於a[q+1,r]中的每個元素

接著計算子陣列a[p, q]中元素的個數m:

int

randomselect

(int

*a,int p,

int r,

int k)

intrandompartition

(int

*a,int p,

int r)

intpartition

(int

*a,int p,

int r)

}swap

(a[i +1]

, a[r]);

return i +1;

}

時間複雜度:

最壞情況下:o(n^2),在找最小元素時,總是在最大元素出劃分

平均時間複雜度:o(n)

NOIP提高組模擬 快速荷葉葉變換

我們可以把式子進行拆分,變成 n i 1 nmodi mj 1 m modj 也就是前一半和後一半可以分開計算。假設計算 n i 1 nmodi 列舉出所有情況,發現可以進一步推出公式n2 mi 1 n i i 再推導,發現了對於某乙個i來說,若是 nmodi 0 那麼 nmod i 1 一定等於 ...

選擇排序,快排,冒排

基本思想 選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理 首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢 在待排序資料中,選出最小的乙個數與...

排序 選擇 冒泡 快排

簡單介紹三種常見的排序方法 選擇 冒泡 快排。從大到小排列 選擇排序是在所有資料中先選擇第乙個資料作為最大值,依次和後面的每乙個資料比較,如果比最大值大,替換最大值並且記住索引,遍歷結束後,通過索引把最大值和第乙個資料替換。後面的資料依次執行一遍,就可以得到從大到小排列的資料了。如下 4 void ...