A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

#define COUNT 1000000

int main(void)
{
            inta[COUNT] = {0};
   for (int i = 0; i < COUNT; i++) {
       int number = arc4random()%COUNT;//把随机数作为下标,值作为出现次数
       a[number - 1] ++;
    }
   //输出重复的数字以及重复次数
   for(int i = 0 ;i < COUNT;i++){
       if (a[i] > 1) {
           printf("%d repeats %d times\n",i+1,a[i]);
       }
    }
            return0;
}


这种效率比较高,有的人用类似冒泡排序的方法,理论上可以实现,但是CPU的运算速度达不到,程序会一直卡在那里

2 个回复

倒序浏览
这样解决的问题不一样啊,排序解决的是已知的1M个数里面重复的,
你这个解决的是,1M个随机数里面重复的,每次结果都不一样
回复 使用道具 举报
当然用冒泡或插入排1M个数基本都不现实,排个几千上W个就卡了;
基本会用其他算法排序,IOS中还不知道怎么弄,java中有自己的很快的排序方式
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马