線性時間選擇問題,實際上是隨機快速排序演算法的乙個引申,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...