1. 程式人生 > >尋找主元素

尋找主元素

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)。