读书人

1000个0-9的数目字,查找出现次数最多的

发布时间: 2012-12-28 10:29:05 作者: rapoo

1000个0-9的数字,查找出现次数最多的3个数字.并求这他们出现的次数.

今天面试碰到 "1000个0-9的数字,查找出现次数最多的3个数字.并求这他们出现的次数."的题目,大概写了一下.结果是出来了,但是我觉得这样写不好,本人算法很菜,大家有没有更好的解决办法??

?

?


python版本的 ,这个题目不难啊 :-),很多方法的
实在是不想用自带的sort了。


result:
9-1-9-2-2-6-2-4-7-9-2-3-4-4-6-3-8-5-0-2-7-6-1-3-0-1-0-9-6-1-9-4-5-7-2-3-8-1-9-8-9-4-4-9-9-9-9-5-6-8-2-6-7-2-5-6-3-0-7-9-1-5-6-7-9-0-4-9-4-0-0-2-0-9-8-3-1-9-7-6-3-4-3-4-6-9-1-6-9-1-9-9-7-8-2-7-5-7-4-9-
=====================打印前3个数的统计====================
9的个数为:21
4的个数为:11
6的个数为:11
=====================打印前10个数的统计====================
9的个数为:21
4的个数为:11
6的个数为:11
2的个数为:10
7的个数为:10
1的个数为:9
0的个数为:8
3的个数为:8
5的个数为:6
8的个数为:6#include "time.h"


#define NUM 20

typedef int type ;
using namespace std;

struct All
{
int data;
int num;
};


int _tmain(int argc, _TCHAR* argv[])
{
int a[NUM];
All c[10];
for(int i=0;i<10;i++)
{
c[i].data=i;
c[i].num=0;
}
cout<<"数组为"<<endl;
for(int i=0;i<NUM;i++)
{
a[i]=rand()%10;
}

for(int i=0;i<NUM;i++)
{
cout<<"a["<<i<<"]="<<a[i]<<endl;
c[a[i]].num++;
}
cout<<"统计每个字符出现的位置:"<<endl;
for(int i=0;i<10;i++)
{
cout<<c[i].data<<":"<<c[i].num<<endl;

}

return 0;
}
count = 0;
}

for (int i = 0; i < max.length - 1; i++) {
for (int j = 0; j < max.length - i - 1; j++) {
if (max[j] < max[j + 1]) {
int temp = max[j];
max[j] = max[j + 1];
max[j + 1] = temp;
}
}
}

for (int k = 0; k < 3; k++) {
System.out.println(max[k] + " ");
}
}
}

也写了一个,不知道对不对。忘了注释!

读书人网 >编程

热点推荐