c - 是什么在 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]]++
它可以更简单,更明确吗?
解决方案
首先,初始化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è对其进行优化以及时工作。
推荐阅读
- apache-poi - Apache POI 在替换 doc 文件中的字符串后破坏了目录
- python - ValueError:检查输入时出错:预期 conv2d_1_input 的形状为 (None, 50, 30, 3) 但得到的数组的形状为 (1, 3, 50, 30)
- service-worker - Workbox 调试模式可以供公众使用吗?
- arrays - 多个二维数组的相关系数
- java - 在 Java/Jackson 中从“数组”中获取元素
- android - 由于 RecylerView 第一次跳过了 Fragment Transition
- c# - 最有效地实现具有大量点的图
- opencl - 截至 2018 年年中,NVIDIA SPIR 支持的状态如何?
- java - 用于文件轮询的spring集成java dsl中的Nio locker使用
- sql-server - pecl install sqlsrv 失败并出现配置错误:C 编译器无法在 SLES 12 上创建可执行文件