首页 > 解决方案 > 是什么在 C 中的这段代码中生成“frec[v1[i]]++”

问题描述

#include<stdio.h>

int i;
int main()
{
   int frec[1000000]={0};
    int v1[10];

    for(i=0;i<10;i++)
    {
        scanf("%d", &v1[i]);
    }

    for(i=0;i<10;i++)
    {
        frec[v1[i]]++;
    }
    for(i=0;i<1000000;i++)
    {
        if(frec[i])
        {
            printf("number %d repeat off %d \n",i, frec[i]);
        }
    }
    return 0;
}

我需要制作一个程序,如何在 C 中显示数组元素的频率是什么使 frec[v1[i]]++

它可以更简单,更明确吗?

标签: carrays

解决方案


首先,初始化count为 0。然后以线性方式遍历数组。对于与 匹配的每个元素elm,只需递增count

/* C function to count occurrences of an element in an unsorted array */ 

int frequency(int array[], int array_size, int elm) 
{ 
    int count = 0; 
    for (int i = 0; i < array_size; i++) 
       if (array[i] == elm)  
          count++; 
    return count; 
} 

如果您的数组已排序,您可以O(Log n)使用`Binary Searchè对其进行优化以及时工作。


推荐阅读