在乙個由n個元素組成的集合中,第i個順序統計量是該集合中的第i小的元素。本章的演算法正是找出乙個互異的元素集合中的第i小的元素。
①單個的最小值和最大值
在乙個有n個元素的集合中,我們要確定其中最小的元素,必須要進行n-1次比較,正如minmum(a)演算法顯示的這樣:
minmun(a):
min=a[i];
for i=2 to a.length
if min>a[i]
min=a[i];
return min;
以上的演算法實現找到乙個最小的元素,找最大的元素原理也是一樣。從以上的分析可以看出要找出單個的最大值和最小值要執行n-1次。
②同時找出最大值和最小值
如果分別進行尋找的話,找出最大值要進行n-1次比較,找出最小值也需要進行n-1次比較總共就是2n-2次比較,但是要是同時進行尋找的話最多隻需要進行3⌊n/2⌋比較。
具體做法如下:
首先,我們將一對輸入元素相互進行比較,然後把較小的與當前最小的進行比較,把較大的與當前最大的進行比較。這樣,對每2個元素共需進行3次比較。
我們分析一下總的比較次數,如果n是奇數,那麼總共進行了3⌊n/2⌋次比較,如果n是偶數,則是先進行乙個初始比較,然後進行3(n-2)/2次比較,共3n/2-2次比較。因此,不管是哪一種情況,總的比較次數至多是3⌊n/2⌋次。
演算法導論 中位數和順序統計量
在乙個由n個元素組成的集合中,第i個順序統計量是該集合中第i小的元素。乙個中位數是它所屬集合的 中點元素 當n為奇數時,中位數是唯一的,位於i n 1 2處 當n為偶數時,存在兩個中位數,分別位於i n 2和i n 2 1處。如果不考慮n的奇偶性,中位數總是出現在i n 1 2 處 下中位數 和i ...
演算法導論 9 中位數和順序統計量
乙個中位數是它所屬集合的中點元素 9.1.1 在乙個有n個元素的集合中,需要做多少次比較才能確定其最小元素呢 9.1.2 同時找到最小值和最大值 實現 同時求解最大值和最小值 123 4567 891011 1213 1415 1617 1819 2021 2223 2425 26 def mini...
演算法導論 中位數和順序統計量之選擇演算法
實際生活中,我們經常會遇到這類問題 在乙個集合,誰是最大的元素?誰是最小的元素?或者誰是第二小的元素?等等。那麼如何在較短的時間內解決這類問題,就是本文要闡述的。先來熟悉幾個概念 1 順序統計量 在乙個由n個元素組成的集合中,第i個順序統計量 order statistic 是該集合中第i小的元素。...