今天學習《演算法導論》 chapter9,
查詢陣列中min:陣列中元素個數為n,需要比較n-1次才能找出最小值。從比較次數來看,已經是最優的
同時找出min和max:最多需要3┌ n/2 ┐次比較
找到n個元素中的次小元素:最壞情況下,需要n+┌ lg n ┐-2次比較。需要有乙個鍊錶儲存和最小值比較過的值。
找到n個元素中第i小的元素:
1、平均情況下,線性時間
利用了randomized_partition演算法。類似於快排。對輸入數字進行遞迴劃分,但每次只處理劃分的一邊。
最壞情況下,時間複雜度是o(n2)。和快排類似
2、最壞情況線性時間的選擇:select演算法
(1)如果n=1,則select直接返回該值
(2)將輸入陣列的n個元素劃分為 n/5組,每組5個元素。且至多只有乙個組由剩下的n mod 5個元素組成
(3)尋找每個組的中位數,首先對每個組中的元素進行插入排序,然後從排序過的序列中選出中位數
(4)對3步中找出的中位數,遞迴呼叫select以找出其中位數x(如果有偶數個中位數,根據約定,x是下中位數)
(5)如果i=k,則返回x。否則,如果ik,則在高區中找地第(i-k)個最小元素。
中位數和順序統計學
1 最大值和最小值 對大小為n的陣列求最大值或最小值,僅需比較n 1次即可。minmum a,n min a 0 for i 1 iif a i min a i 對最大值也是如此。若同時取得最大值和最小值,按照上述方法,需比較2 n 1 次。事實上,至多3 2n次即可同時求得最大值和最小值。成對成對...
演算法分析 中位數和順序統計學
兩個數之間的最大值,最小值 還有下標 6var temp max,temp min 0 78 偶數 9if this.length 2 0 else 17 index 2 18 else 2324 採用迭代 randomized select 演算法採用快速排序演算法的思想。區別是,快速排序會遞迴地...
中位數和順序統計
如何求取陣列中第i 小 大 的數,好像就是順序統計了,反正我是這麼理解的。有了順序統計,求取中位數就方便了。假設陣列有n個元素,如果n為奇數,則轉化為求取第 n 1 2小的元素 如果n為偶數,則轉化為求取第n 2小和第n 2 1小的元素,並取平均值得到。中位數的好處?好像是為了解決求平均值時的乙個弊...