文章目录
- 一,思路方法
- 二,代码实现
一、思路方法
寻找出一个数组中的众数,那么可以先将这个数组进行排序一下,不管是从大到小还是从小到大进行排序,中间的数就是我们要找的众数,这样就完成了目标。
二、代码实现
1.从小到大进行排序
代码如下(示例):
#include <stdio.h>
void Ascending(int arr[],int n);//对数组进行升序
void Swap(int* a,int* b);//交换数值
#define N 100
int main()
{
int number = 0;
scanf("%d",&number);//这里的number表示这个数组要输入的数的个数
int i = 0;
int count[N];
int right = number-1;//最右边元素的下标
for(i=0;i<number;i++)
{
scanf("%d",&count[i]);
}
Ascending(count,number);//调用函数进行升序
printf("%d",count[right/2]);
return 0;
}
void Ascending(int arr[],int n)
{
int i,j,k;
for(i=0;i<n;i++)
{
k = i;
for(j=i+1;j<n;j++)
{
if(arr[j]>arr[k])
{
k = j;
}
}
if(i!=k)
{
Swap(&arr[i],&arr[k]);//交换两个数值
}
}
}
void Swap(int* a,int* b)
{
int tem;
tem = *a;
*a = *b;
*b = tem;
}
2.从小到大排序
只需要将函数Ascending 换成 函数Dscending进行降序
代码如下(示例):
void Dscending(int arr[],int n)//进行降序
{
int i,j,k;
for(i=0;i<n;i++)
{
k = i;
for(j=i+1;j<n;j++)
{
if(arr[j]<arr[k])
{
k = j;
}
}
if(i!=k)
{
Swap(&arr[i],&arr[k]);//交换两个数值
}
}
}