線性期望時間選擇問題C語言

2021-06-05 02:26:30 字數 895 閱讀 5500

直接上**

#include #define size (20)   

int main (void) ;

int select (int * const array, const int left, const int right, const int ith) ;

int partition (int * const array, const int left, const int right) ;

void swap (int * const plv, int * const prv) ;

int main (void)

; int size = size ;

int ith = 19 ;

printf ("the %d %s least number is : %d/n", ith, ith > 3 ? "th" : (1 == ith ? "st" : (2 == ith ? "nd" : "rd")), select (array, 0, size - 1, ith)) ;

return 0 ;

}

int select (int * const array, const int left, const int right, const int ith)

int partition (int * const array, const int left, const int right)

swap (array + i, array + pivot) ;

return i ;

}

void swap (int * const plv, int * const prv)

期望線性時間選擇

在乙個由n個元素組成的集合裡,第i個順序統計量 order statistic 是該集合中第i 小的元素。比如 在一組元素的集合中,最小值是第1個順序統計量 i 1 而最大值是第n個順序統計量 i n code include include include void swap int a,int ...

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

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

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

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