在数组中查找模式的最有效方法?

2023-12-03

最近我尝试使用C来查找一组数字中的众数。 当集合很小时,我的代码可以做得很好。

这是我的代码:

int frequency[10001]; //This array stores the frequency of a number that between 0 to 10000
int main()
{
    int x[10]={1,6,5,99,1,12,50,50,244,50};
    int highest = 0;
    int i,j,k;

    for(i=0;i<10;i++)
    {
        frequency[x[i]]++;
        if(frequency[x[i]]>highest)
            highest = frequency[x[i]];
    }

    printf("The mode in the array : ");
    for(i=0;i<=10001;i++)
        if(frequency[i]==highest)
            printf("%d ",i);
    return 0;
}

后来我发现,如果数字很大的话,我的方法会非常慢。另外,如果数字小于 0 或大于 10000,我的程序将无法工作,除非我增加“频率”数组的大小。

因此,我想知道有什么方法可以更有效地找到数组中的模式?谢谢。


Use a 哈希表。 (即 unordered_map 通常是这样实现的)。

您将问题标记为 C++,因此您将获得一些 C++ 示例代码。你自己用 C 语言实现哈希表。这不是一个糟糕的学习练习。

int x[10]={1,6,5,99,1,12,50,50,244,50};
std::unordered_map<int, int> table; // map of items in "x" to the number of times observed.
for (int i = 0; i < 10; i++)
{
     table[x[i]]++;
}

int mode = 0;
int mode_freq = 0;
for (auto itor = table.begin(); itor != table.end(); itor++)
{
    if (itor->second > mode_freq)
    {
        mode = itor->first;
        mode_freq = itor->second;
    }
}
std::cout << "The mode in the array is " << mode << std::endl;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在数组中查找模式的最有效方法? 的相关文章

随机推荐

  • 发送 Outlook 日历邀请 PHP

    该代码的目标是使用 PHP 发送约会和阻止人员日历 我这里有两页 测试 php
  • 通过缓存电子表格值提高脚本性能

    我正在尝试使用 Google Apps 脚本开发一个网络应用程序 将其嵌入到 Google 站点中 该站点仅显示 Google 表格的内容并使用一些简单的参数对其进行过滤 至少目前是这样 稍后我可能会添加更多功能 我得到了一个功能齐全的应用
  • 将密码重置发送到其他电子邮件 - Devise

    我正在使用 Ruby on Rails 5 和 devise 我需要将密码重置电子邮件发送到与我的用户表中存储的电子邮件不同的电子邮件 如何才能实现这一目标 请注意 这是非常不推荐的实现方式 它不在最佳实践的范围内 它又脏又脆弱 但如果你真
  • Apple 文件系统从照片库读取的权限

    我的 ios 应用程序中有一个 UIWebView 它将响应式网站加载到我的 webview 中 在 asp net 中开发 网站有一个按钮用于从设备照片库中选择视频 另一个按钮用于上传视频 在 ios 版本 10 2 之前 它可以成功地将
  • 在帆和水线中混合使用 AND 和 OR 子句

    如何在 Sailsjs 及其 ORM Waterline 中使用 OR 和 AND 子句 例如我有一张书表 book name author free public Book A Author 1 false true Book B Aut
  • 错误标记主机:等待条件超时 [kubernetes]

    我刚刚开始学习 Kubernetes 我已经通过 Kubernetes YUM 存储库安装了 CentOS 7 5 并禁用了 SELinux 的 kubectl kubeadm 和 kubelet 然而 当我想开始一个kubeadm ini
  • 撇号 cms - 自定义小部件中富文本的内联编辑?

    在某些情况下 我无法将富文本的内联编辑保存回数据库 请耐心等待 这里将粘贴一些代码 因为这是我描述我正在做的事情的唯一方式 我的项目中有两种自定义小部件 一种只有一个小部件实例 通常在lib modules目录 article widget
  • 依赖注入类型选择

    最近我遇到一个问题 我必须根据参数选择类型 例如 用于发送通知的类 应根据输入参数选择正确的渠道 电子邮件 短信等 我看起来像这样 public class NotificationManager IEmail email ISms sms
  • Google URLShortener API 返回 ipRefererBlocked

    我正在尝试将 Google URL 缩短 API 与 PHP 结合使用 apiKey ABC url http www stackoverflow com postData array longUrl gt url jsonData jso
  • 正则表达式匹配除空格之外的单个字符

    我需要匹配一个不是空格的单个字符 但我不知道如何使用正则表达式来做到这一点 以下应该足够了 如果您想将其扩展到除空白之外的任何内容 换行符 制表符 空格 硬空格 s or S Note this is a CAPITAL S
  • 将数据从操作传递到另一个操作

    如何通过 RedirectAction 方法将模型从 GetDate 操作传递到另一个 ProcessP 操作 这是源代码 HttpPost public ActionResult GetDate FormCollection values
  • MobileNetV2 的 Keras 和 TensorFlow Hub 版本之间的差异

    我正在研究一种迁移学习方法 并且在使用 MobileNetV2 时得到了非常不同的结果keras applications以及 TensorFlow Hub 上提供的一个 这对我来说似乎很奇怪 因为两个版本都声称here and here从
  • PHP:如何使用数组索引访问数组元素值[重复]

    这个问题在这里已经有答案了 如何使用数组索引访问数组元素值 我不知道 动态 中有什么 所以我想动态访问 pageCount 值 数组值是您正在寻找的功能 例子
  • 改进多节点集群上的 h2o DRF 运行时

    我目前正在跑步h2o的 DRF 算法是一个 3 节点 EC2 集群 h2o 服务器跨越所有 3 个节点 我的数据集有 100 万行和 41 列 40 个预测变量和 1 个响应 我用R控制集群和 RF 调用的绑定如下 model h2o ra
  • PLS-00306:调用“OUTPUT_ARRAY”时参数的数量或类型错误

    我被这个错误困住了 真的不知道如何修复它 也许我以不正确的方式传递数组 这是主要的 sql 文件 DECLARE v array length NUMBER v array length BEGIN DECLARE TYPE number
  • 在 wpf 中绘图时对线条进行动画处理

    XAML
  • 通过依赖注入模拟 C++ 类

    假设你正在测试课程A它有一个依赖注入 of B其中有一个依赖注入C 所以你嘲笑B但它唯一的构造函数需要注入C 所以你必须嘲笑C以及注入模拟的C进入被嘲笑的地方B然后才将其注入A 如果有 5 个连续的依赖关系怎么办 有哪些替代方案 I use
  • 完美的角色无限旋转

    我正在尝试使用这个角色 代替加载旋转器 这是我到目前为止所得到的 spinner after animation rotating 2s linear infinite content font size 60px display inli
  • 将数字添加到子图

    我是 matplotlib 的新手 正在尝试了解如何将数字添加到子图中 我有三个不同的函数 它们输出一个数字 def plot fig 1 vars args f ax put subplots do something ax plot x
  • 在数组中查找模式的最有效方法?

    最近我尝试使用C来查找一组数字中的众数 当集合很小时 我的代码可以做得很好 这是我的代码 int frequency 10001 This array stores the frequency of a number that betwee