这个当时写了注释
#include<iostream>
#include<algorithm>
using namespace std;
int n1=0; //定义全局变量用来定义众数
int n2=0; //用来定义重数
int count(int a[],int first,int last){//firsrt为数组第一个元素的索引 last表示数组a的最后一个元素的索引 count函数的目的是为了统计数组中间数出现的次数
int n = a[(first+last)/2];
int count = 0;
for(int i = first; i < last; i++)
if( a[i] == n) count++;
return count;
}
int start(int a[],int first,int last){
int x = 0;
for( int i = first; i < last; i++){
if(a[i] = a[(first+last)/2]);
x = i; break;
}
return x;
}
void mode(int a[] ,int first,int last){
int tnum = (first + last)/2; //tnum 中间轴
int tsum=count(a,first,last);
int left=start(a,first,last);
if(tsum>n2){
n2=tsum;
n1=a[tnum];
}
if(first-(left+tsum)>n2) //如果右边元素的个数大于重数sum,向右寻找
mode(a,left+tsum,last);
if(left>n2)
mode(a,first,left);
}
int main(){
int a[5];
cout<<"请输入数组的元素:";
for(int i = 0 ;i < 5; i++) cin>>a[i];
mode(a,a[0],a[5]);
n2 = count(a,a[0],a[5]);
cout<<n1<<"---"<<n2;
return 0;
}
s