在有n個元素的集合中如果想找最小值,最優也就是n-1次,但如果同時找最大值和最小值,最優可以不是2(n-1)次而是3*(n/2)次,基本思路是成對的比較,先兩個數之間比較,較小值與最小值比較,較大值與最大值比較,注意奇數偶數要分開討論。
#include#includeusing namespace std;
int main()
else
min = min(tempmin, min);
max = max(tempmax, max);
} }else
else
min = min(tempmin, min);
max = max(tempmax, max);
} }cout << "max=" << max << endl;
cout << "min=" << min << endl;
delete p;
return 0;
}
要從n個元素的集合中選出第i大的元素,基本思路是利用快排中的partition函式,這個函式呼叫後可以知道某乙個數的大小在集合中具體的位置,這樣經過二分就可以遞迴用線性時間得到第i大的元素。因為這裡只要取其中一支遞迴,所以randselect的t(n)=o(1),總期望執行時間只有partition的o(n)。
#include#includeusing namespace std;
int partition(int a, int p, int r);
int randselect(int a, int p, int r, int pos);
int main()
int randselect(int a, int p, int r, int pos)
int partition(int a, int p, int r)//就是快排的分割槽函式
{ int x = a[r];
int i = p - 1;
for(int j=p;j
演算法導論 中位數與順序統計量
華電北風吹 天津大學認知計算與應用重點實驗室 日期 2015 7 7 一 選擇最大值或者最小值的最優演算法 對於長度為n的陣列,已證找最大值或者最小值比較操作下界就是n 1。所以只需要讓第乙個值為初始最大值或者初始最小值,用所有的值與這個值比較,更新這個值即可。def minimum a minnu...
演算法導論 中位數和順序統計量
在乙個由n個元素組成的集合中,第i個順序統計量是該集合中第i小的元素。乙個中位數是它所屬集合的 中點元素 當n為奇數時,中位數是唯一的,位於i n 1 2處 當n為偶數時,存在兩個中位數,分別位於i n 2和i n 2 1處。如果不考慮n的奇偶性,中位數總是出現在i n 1 2 處 下中位數 和i ...
演算法導論之中位數和順序統計量(3)
在乙個由n個元素組成的集合中,第i個順序統計量是該集合中的第i小的元素。本章的演算法正是找出乙個互異的元素集合中的第i小的元素。單個的最小值和最大值 在乙個有n個元素的集合中,我們要確定其中最小的元素,必須要進行n 1次比較,正如minmum a 演算法顯示的這樣 minmun a min a i ...