一个关于数组的算法
题目:数组array中有若干个范围为1——100的整数,统计相同数字出现的次数。
分析:
1.数组中都为整数,范围在1——100,即最多有100种情况,也就是最多有100个计数变量。
2.假如题目改为:求整数10出现的个数,那么则好理解并实现。
int i,count = 0;
for(i = 0;i < n;i++)
{
if(arry[i] = 10)
count++;
}
3.对于100种出现的可能,那么可以定义一个有100个元素的数组,用数组元素下标对应数字,用数组元素的值就是对应数字出现的次数,这样就是典型的空间换算时间。
int i,count[100] = {0};
for(i = 0;i < n;i++)
{
count[arry[i]-1]++;
}
假设题目中整数的范围是1——n呢?有什么好的算法?这个暂时还没想到,欢迎大家留言建议。