黑马程序员技术交流社区
标题:
有1000000个数,每个数的取值范围都是0~999999,找出其中重复的数
[打印本页]
作者:
余丽丽
时间:
2015-8-9 09:33
标题:
有1000000个数,每个数的取值范围都是0~999999,找出其中重复的数
#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的运算速度达不到,程序会一直卡在那里
作者:
wowthe1st
时间:
2015-8-9 11:46
这样解决的问题不一样啊,排序解决的是已知的1M个数里面重复的,
你这个解决的是,1M个随机数里面重复的,每次结果都不一样
作者:
wowthe1st
时间:
2015-8-9 11:52
当然用冒泡或插入排1M个数基本都不现实,排个几千上W个就卡了;
基本会用其他算法排序,IOS中还不知道怎么弄,java中有自己的很快的排序方式
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2