直接上**
#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 那麼,...