我是菜鸟 之输入几个数,在数组中去重并且统计出现的次数

本文介绍了一种通过遍历和比较实现数组元素去重并统计各元素出现次数的方法。该方法利用两个数组分别存储不同元素及其出现次数,通过标志变量避免重复计数。

想到一个问题:输入组数字,如何去重并且统计出现的次数呢?
最早想到的是:N个数遍历查找N次,但这种算法的复杂度较高且不灵活。
于是辣鸡的我想了这个办法:

#include<stdio.h>
#include<stdlib.h>
 int main()  
 {  
    int flag=0;
    int b[100],n,N=0;  //这里的数组b中存着要处理的数,N是有N个不同的数
    int a[100][2]={0};  //数组a中存着对应的值和出现次数
    scanf("%d",&n); 
    for(int i=0;i<n;i++)
    {
    scanf("%d",&b[i]); 
    for(int j=0;j<N;j++)
    {
    flag=0; 
    if(a[j][0]==b[i])
      {
        flag=1;
        a[j][1]++;
        break;
      }
    }
    if(flag==0)
    {a[N][1]=1;  a[N++][0]=b[i];}
    }
    for(int i=0;i<N;i++)
     printf("%d %d\n",a[i][0],a[i][1]); 
return 0;  
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值