求主元素的线性算法
YOYO
posted @ 2009年3月12日 21:32
in 【算法】与【数据结构】
with tags
主元素
, 2928 阅读
知道怎么算,实现起来好囧,百度了一下,发现这个好简洁 = =,不过这个输入时就一定有主元素,故没有再对函数找出来的A[x]作判定:
-
#include<iostream>
-
using namespace std;
-
-
#define N 100
-
-
int searchMost(int A[], int n){
-
int x = 0;
-
for(int i = 1, j = 1; i<n; i++){
-
if(A[x]==A[i]){
-
j++;
-
}else{
-
if(j>0){
-
j--;
-
}else{
-
x = i;
-
}
-
}
-
}
-
return A[x];
-
}
-
-
int main(){
-
int A[N],n;
-
-
input:
-
cout<<"请输入数组的元素个数(<"<<N<<"):";
-
cin>>n;
-
-
if(n<=0){
-
cout<<"n必须大于0!"<<endl;
-
goto input;
-
}
-
if(n>=N){
-
cout<<"n必须小于"<<N<<"!"<<endl;
-
goto input;
-
}
-
-
cout<<"请输入数组的元素:";
-
for(int i = 0; i<n; i++){
-
cin>>A[i];
-
}
-
-
cout<<"数组中出现最多的元素是:";
-
cout<<searchMost(A,n)<<endl;
-
-
return 0;
-
}
- 无匹配