定義:
整型陣列a[1...n],如果整數x在陣列a**現的次數多於半數,則x稱為多數元素
應用概念:
觀察結論5.1:在原序列中去除兩個不同的元素後,那麼在原序列中的多數元素在新序列中還是多數元素。
例1: 1,2,2,3,2,2,3 顯然2是多數元素
去除1,2,在2,3,2,2,3中2仍是多數元素
去除1,3,在2,3,2,2,3中2更是多數元素例2: 1,3,2,3,2,2,3 顯然沒有多數元素
去除1,3,在2,3,2,2,3中2成了多數
測試**:
#include
int candidate(int a, int m, int n)
int j = m, c = a[m], count = 1;
while (j < n && count > 0)
++ j;
if (a[j] == c)
++ count;
else
-- count;
if (j == n)
return c;
else
return candidate(a, j+1, n);
// a[1...n]
int majority(int a, int n)
int c = candidate(a, 1, 10);
int count = 0;
int majority;
for (int i = 1; i <= n; ++ i)
if (a[i] == c)
++ count;
if (n%2 == 0)
majority = n/2 + 1;
else
majority = n/2;
if (count > majority)
return c;
else
return -1;
int main()
int a[11];
for (int i = 1; i < 11; ++ i)
scanf("%d",a+i);
printf("%d\n",majority(a, 10));
getchar();
getchar();
python尋找多數元素 尋找多數元素
今天實現的演算法是尋找多數元素,多數元素是指在乙個含有n個元素的序列 現次數多於 n 2 向下取整 的元素。蠻力尋找多數元素是對每個元素進行計數,如果某個元素的計數超過 n 2 則斷言它是多數元素,否則不存在多數元素。這種方法的時間複雜度過高,可以尋找更高效能的演算法解決這類問題。如果乙個序列存在多...
實驗一 尋找多數元素
實驗一 尋找多數元素 實驗題目1 尋找多數元素 10.11日實驗 要求 1 分別設計普通演算法和歸納法演算法,2 寫出 並除錯成功 3 給出乙個存在多數元素的陣列作為例子,執行 輸出結果 在乙個整數序列裡,當某個元素a出現的次數多於 n 2 的底數,則為多數元素。暴力法 把每個元素與其他的相比較,並...
尋找多數元素 使用尋找候選者的方法。
尋找陣列中的多項元素有多種辦法,直接暴力迴圈或者是先排序後尋找中間元素最壞的時間複雜度為nlogn。幾天記錄乙個使用候選者的方法去尋找陣列中的多項元素時間複雜度則為n n即為n 與直接遍歷迴圈查詢最大的不同點是,尋找候選者的過程中我們定義乙個count值,當遍歷時陣列值與我們的候選值相等時count...