尋找主元素
阿新 • • 發佈:2018-12-22
int Majority(int A[],int n){ int i,c,count=1; //c用來儲存候選主元素,count用來計數 c=A[0]; //設定A[0]為候選主元素 for(i=1;i<n;i++) //查詢候選主元素 if(A[i]==c) count++; //對A中的候選主元素計數 else if(count>0) //處理不是候選主元素的情況 count--; else { //更換候選主元素,重新計數 c=A[i]; count=1; } if(count>0) for(i=count;i<n;i++) //統計候選主元素的詩集出現次數 if(A[i]==c) count++; if(count>n/2) return c; //確認候選主元素 else return -1: //不存在主元素 }
主元素為一組資料中出現次數超過一 半的元素。
複雜度為O(n),空間複雜度為O(1)。