經典演算法之線性時間選擇的C實現方法

2021-07-03 03:38:33 字數 775 閱讀 6606

線性時間選擇問題,實際上是隨機快速排序演算法的乙個引申,ie,通過對隨機快速排序演算法的小小改動就可以實現。

源**如下:

// ********************=【隨機選擇 】***************===

// @ author : zhyh2010

// @ date : 20150606

// @ version : 1.0

// @ description :

// ********************=【隨機選擇】***************===

#include

#include

#define num 20

int arr[num] = ;

void init()

void swap(int * pa, int * pb)

void display(int * arr)

int partition(int low, int high)

swap(&arr[i + 1], &arr[high]);

return i + 1;

}int randompartition(int low, int high)

int randomselect(int low, int high, int

id)void main()

演算法設計與分析之線性時間選擇(C )

例題二本部落格其他文章推薦 對於給定的n個元素的陣列a 0 n 1 要求從中找出第k小的元素 輸入 輸入有多組測試例。對每乙個測試例有2行 第一行是整數n和k 1 k n 1000 第二行是n個整數 輸出 第k小的元素 我們知道,快速排序演算法的一次排序的思想是 找到乙個數字作為標準,把比該數小的放...

期望為線性時間的選擇演算法

演算法導論 第9章randomized select演算法 從乙個陣列當中尋找第i小的元素,最簡單最暴力的方法就是將整個陣列按照公升序進行排序操作,那麼第i個元素就是第i小的元素。如果是以這種方式,那麼時間複雜度等同於排序時所使用的排序演算法,如果是快速排序,那麼此時時間複雜度為o nlgn 那麼,...

期望為線性時間選擇演算法

一般選擇問題看起來要比我麼找最小值這樣的簡單問題更難。但這兩個問題的漸進執行時間卻是相同的 n randomized select演算法,以快速排序演算法為模型。與快速排序不同的是,快速排序會遞迴處理劃分的兩邊,而randomized select只處理劃分的一邊。快速排序執行的時間是 n n 而r...