C++-众数问题
#include <iostream>
#include <>
using namespace std;
/*
冒泡排序,相邻两个元素进行比较交换位置 ,
每循环一次就有一个最大的数确定好位置
*/
void sort(int a[] ,int n){
int i,j,temp;
for(i=0;i<n-1;++i){ //冒泡排序
for(j=0;j<n-i-1;++j){ //j是减去已经排好位置的最后的i个数
if(a[j]>a[j+1]){ //每次冒泡,进行交换
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
int main(){
int a[1000];
int i,j,n=0,temp,max=a[0],index=0,count=1;// max为众数 index为重数
char c;
cout<<"请输入数组元素:";
for(i=0; ;i++){
cin>>a[i];
n++; //统计输入数字的个数
c=getchar(); //接受回车符判断结束
if(c=='\n')
break;
}
sort(a,n);
//输出排序后的数组
printf("排序后数组:");
for(j=0;j<n;++j)
printf("%d ",a[j]);
printf("\n");
//求众数与重数
//循环数组找相等数的个数
for(i=0;i<n;i++){
if(a[i+1]==a[i])
count++;
else{
if(count>index){
max = a[i];
index = count;
}
count = 1;
}
}
printf("众数是:%d\n重数是:%d",max,index);
return 0;
}