演算法分析 中位數和順序統計學

2022-01-22 00:28:50 字數 2977 閱讀 8231

兩個數之間的最大值,最小值 還有下標;

6var temp_max, temp_min = 0;78

//偶數

9if (this.length % 2 == 0) else

17 index = 2;

18 } else

2324

//採用迭代

randomized-select 演算法採用快速排序演算法的思想。區別是,快速排序會遞迴地處理劃分的兩邊,而 randomized-select 則只處理一邊。所以快速排序的期望執行時間是 θ(n lg n),而 randomized-select 的期望執行時間為 θ(n)。

randomized-select 的最壞執行時間為 θ(n2),即使是要選擇最小元素也是如此。因為它是隨機化的,該演算法的平均情況效能較好。

9.2-1 證明:在randomized-select中,對長度為0的陣列,不會進行遞迴呼叫。

看上面的**,從randomized-select函式知,長度為0的陣列 p=r,那麼直接返回a[p].不做下面的隨機劃分和遞迴呼叫。

9.2-3 給出randomized-select的乙個基於迭代的版本。

1 array.prototype.swap = function

(i, j) ;

67 array.prototype.random_partition = function

(p, r) ;

1314 array.prototype.partition = function

(p, r) 22}

23this.swap(r, ++i);

24return

i;25

};26

27 array.prototype.random_select = function

(p, r, i)

4243

if (i

4849}50

return type ? this[q] : this

[p];

51};

5253

54var a = [1, 2, 3, 4, 5, 3, 2, 1, 0, -1];

5556 console.log(a.random_select(0, a.length - 1, 2));

下面給出乙個更簡介的**:

中位數和順序統計學

1 最大值和最小值 對大小為n的陣列求最大值或最小值,僅需比較n 1次即可。minmum a,n min a 0 for i 1 iif a i min a i 對最大值也是如此。若同時取得最大值和最小值,按照上述方法,需比較2 n 1 次。事實上,至多3 2n次即可同時求得最大值和最小值。成對成對...

演算法學習 中位數和順序統計學

今天學習 演算法導論 chapter9,查詢陣列中min 陣列中元素個數為n,需要比較n 1次才能找出最小值。從比較次數來看,已經是最優的 同時找出min和max 最多需要3 n 2 次比較 找到n個元素中的次小元素 最壞情況下,需要n lg n 2次比較。需要有乙個鍊錶儲存和最小值比較過的值。找到...

中位數和順序統計

如何求取陣列中第i 小 大 的數,好像就是順序統計了,反正我是這麼理解的。有了順序統計,求取中位數就方便了。假設陣列有n個元素,如果n為奇數,則轉化為求取第 n 1 2小的元素 如果n為偶數,則轉化為求取第n 2小和第n 2 1小的元素,並取平均值得到。中位數的好處?好像是為了解決求平均值時的乙個弊...