中位數和順序統計學

2021-09-30 06:07:27 字數 787 閱讀 7514

1 最大值和最小值

對大小為n的陣列求最大值或最小值,僅需比較n-1次即可。

minmum(a,n)

min=a[0];

for(i=1;iif(a[i]min=a[i];

對最大值也是如此。

若同時取得最大值和最小值,按照上述方法,需比較2(n-1)次。

事實上,至多3/2n次即可同時求得最大值和最小值。成對成對的比較,對沒對數先進行比較,然後另其中較大者與max比較,較小者與min比較,這樣每對只需比較3次,共需3/2n次。初始化最大值最小值時還需區分偶數和奇數。

2 求第i小的元素。

類似與快速排序,利用分治法,將輸入陣列a[p..r]劃分成兩個字陣列a[p..q-1]和a[q+1..r],其中乙個子陣列中的元素小於a[q],另乙個字陣列中的元素大於a[q],然後根據第i小的元素落在那個子陣列中進行遞迴呼叫,偽**如下:

randomized_select(a,p,r,i)

if (p==r)

return a[p];

q=randomized_select(a,p,r);

k=q-p+1;

if(i==k)

return a[q];

if(ireturn randomized_select(a,p,q-1,i);

else

return randomized_select(a,q+1,r,i-k);

示例**如下:

ps:該演算法最壞情況下時間複雜度為o(n2),平均情況下o(n)。

演算法導論中還提到了最壞情況線性時間的選擇。

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

兩個數之間的最大值,最小值 還有下標 6var temp max,temp min 0 78 偶數 9if this.length 2 0 else 17 index 2 18 else 2324 採用迭代 randomized select 演算法採用快速排序演算法的思想。區別是,快速排序會遞迴地...

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

今天學習 演算法導論 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小的元素,並取平均值得到。中位數的好處?好像是為了解決求平均值時的乙個弊...