兩個數之間的最大值,最小值 還有下標;
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小的元素,並取平均值得到。中位數的好處?好像是為了解決求平均值時的乙個弊...