代码改变世界

获取数组中出现次数最高的数

2015-09-09 14:44  圆圆的月亮在地上  阅读(427)  评论(0编辑  收藏  举报
- (void)viewDidLoad{
    int array[ ] = {0,1,1,2,3,4,5,6,6,6,7,7,7,7,7,7,9,9,9,9,9};
    search(array,sizeof(array)/sizeof(*array));
}
void search(int a[],int len)
{
    int i,
    index,//temp数组下标,a数组i对应的值。
    max = 0;//temp对应位置的值,既出现的次数。
    
    int temp[1000] = {0};  //定义一个大小为1000个元素的数组,初值均设为0
    for(i = 0; i < len; i++)
    {
        index = a[i];
        temp[index]++;  //哪个元素出现的最多,导致temp[index]值最大
    }
    for(i = 0; i < 1000; i++) //遍历整个数组,找出值最大的元素
    {
        if(max < temp[i])
        {
            max = temp[i];
        }
    }
    for(i = 0; i < 1000; i++) //遍历整个数组,输出值最大元素的下标的值加1
    {
        if(max == temp[i])
        {
            printf("%d\n",i);  //即元素出现次数最多的
        }
    }
}