C 中每 N 个元素中出现次数最多的元素

2024-06-26

我有一个大小为 [0, 8388608] 的大数组 A,其中包含“相对较小”的整数 A[i] = [0, 131072],我想找到每个 N=32 个元素中最常出现的元素。

什么会更快,

A、创建一个大小为131072的关联数组B,迭代32个元素,递增B[A[i]],然后迭代B,找到最大值,将B中所有元素重置为0,重复|A|/32次。

B. 每 32 个元素进行排序,找到 A[i] == A[i-1] 的最大范围(因此是最频繁的元素),重复 |A|/32 次。

(编辑)C.其他的东西。


对第一种方法的改进是可能的。不需要遍历B。并且它可以是大小为131072的数组

每次增加时B[A[i]],查看该单元格中的新值。然后,拥有一个全球highest_frequency_found_far。它从零开始,但每次增量后,新值都应与该全局值进行比较。如果它更高,则全局被替换。

您还可以拥有全球value_that_was_associated_with_the_highest_count

for each block of 32 members of A ... {
    size_t B [131072] = {0,0,...};
    size_t highest_frequency_found_so_far = 0;
    int value_associated_with_that = 0;
    for(a : A) { // where A just means the current 32-element sub-block
        const int new_frequency = ++B[a];
        if (new_frequency > highest_frequency_found_so_far) {
            highest_frequency_found_so_far = new_frequency;
            value_associated_with_that = a;
        }
    }
    // now, 'value_associated_with_that' is the most frequent element

    // Thanks to @AkiSuihkonen for pointing out a really simple way to reset B each time.
    // B is big, instead of zeroing each element explicitly, just do this loop to undo
    // the ++B[a] from earlier:
    for(a : A) { --B[a]; }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C 中每 N 个元素中出现次数最多的元素 的相关文章

  • gets 和 scanf 有什么区别?

    如果代码是 scanf s n message vs gets message 有什么区别 似乎两者都获取消息的输入 基本区别 参考您的特定场景 scanf 遇到一个时结束接受输入whitespace newline or EOF gets
  • 在子目录中构建共享库

    我正在尝试构建一个使用一些 C 代码的 R 包 我有一个编译为可执行文件的 C 库 可以从命令行调用 有一个与之关联的 Makefile 我正在尝试获取信息here http cran r project org doc manuals R
  • 使用索引避免迭代器失效,维护干净的接口

    我创建了一个MemoryManager
  • 运行时两个注册之间的简单注入器基于动态上下文的注入

    我有一个使用 Simple Injector 进行命令处理程序注册的中介应用程序 并且注入和处理程序均已设置并完美运行 class DoWashingCommandHandler IRequestHandler
  • 在宏中使用 # [重复]

    这个问题在这里已经有答案了 请解释一下代码 include
  • VS2010中VSHost.exe不断启动

    我正在 VS2010 中使用一个包含大量项目的解决方案 但它不断变得无响应 我注意到的一件事可能是一条线索 尽管我尚未开始任何调试 但 MyApplicationName vshost exe 不断出现在进程列表中 也许每当构建发生时它就会
  • 用于 C/C++ 的独立跨平台 (Windows/Linux) 文件压缩?

    我正在寻找一个 最好是小的 C 或 C 开源库 我可以将其包含在我的 MIT 许可项目中 托管在 google 代码上 我是一名业余爱好 C C 程序员 所以我并不那么先进 但我只知道为名为 SA MP 的应用程序 适用于 Windows
  • ASP.NET 中的 thread.sleep

    我正在为我的网站模拟彗星实时馈送协议 因此在我的控制器中我添加 while nothing new before timeout Thread Sleep 1000 但我注意到添加此功能后整个网站变慢了 调试后我得出结论 当我打电话时Thr
  • 解析通过asp:FileUpload上传的XML文件

    我有一个场景 用户将上传 XML 文件 我想将该文件添加到数据库中的表中 不过 困难的部分是我需要解析文件 然后将一些信息添加到一些不同的表中 显示如何获取 XML 文件的每个示例都使用 URI 来获取文件 但是如何直接从数据库获取文件 或
  • Visual Basic 中未知长度的数组

    我有一段用 Visual Basic 编写的代码 Dim n As Double i As Integer n 4 Dim Ramp length 1 To 4 As Double For i 1 To n Ramp length i Ce
  • Java Reflection:为什么这么慢?

    我一直避免使用 Java 反射 因为它速度缓慢 我在当前项目的设计中达到了一个点 能够使用它将使我的代码更具可读性和优雅性 所以我决定尝试一下 我只是对这种差异感到惊讶 我注意到有时运行时间几乎延长了 100 倍 即使在这个简单的例子中 它
  • 内存不足异常

    我正在使用 C 和 asp net 开发一个网络应用程序 我一直收到内存不足的异常 该应用程序的作用是从数据源读取一堆记录 产品 可能是数百 数千 通过向导中的设置处理这些记录 然后使用处理的产品信息更新不同的数据源 虽然有多个 DB 类
  • 嘲笑会员用户

    我目前正在开发一个 asp net mvc 2 应用程序 它使用默认的 SqlMembershipProvider 进行身份验证 我已经实现了一个控制器方法 通过调用读取当前用户的 ProviderUserKeyMembership Get
  • WPF MVVM后台打印数据绑定问题

    我正在使用 wpf mvvm 开发一个销售点应用程序 在交易生命周期的许多阶段 都会在后台打印收据 我已经使用其他示例在后台生成和打印收据 我正在后台打印一个 UserControl 一切看起来都很棒 然后 我为该控件创建了 ViewMod
  • 训练某些网络时,Keras(Tensorflow 后端)在 GPU 上比在 CPU 上慢

    我很难理解为什么 GPU 和 CPU 速度在小规模网络中相似 CPU 有时更快 而 GPU 在大规模网络中更快 问题底部的代码在 i7 6700k 上运行时间为 103 7 秒 但使用tensorflow gpu 时 代码运行时间为 29
  • 简单的喷射器将具体类型与生活方式结合起来

    我正在寻找一种可以使用指定的生活方式注册具体类型的方法 基本上如下所示 public void SomeFunction Type concrete Lifestyle lifestyle gt container Register con
  • 链接错误:xxx 已在 *****.LIB 中定义:: 究竟出了什么问题?

    Problem 我正在尝试使用一个名为DCMTK http dicom offis de dcmtk它使用了一些其他外部库 zlib libtiff libpng libxml2 libiconv 我已经从同一网站下载了这些外部库 LIB
  • 为什么 ASP.Net MVC Range 属性采用类型?

    我只是想知道为什么范围验证属性可以采用类型和两个字符串作为参数 这是为了根据枚举或类似的东西验证字符串吗 另外 我想做的是找到一种简单的方法来验证必须出现在枚举中的 3 个字符的字符串 有什么建议吗 谢谢 亚历克斯 我确实发现你提到的 Ra
  • 在 R 中提取栅格的最快方法(提高我的可重现代码的时间)

    我想知道我是否已最大化提取栅格中某个点周围缓冲区域平均值的速度 本地的性能可以进一步提高吗 I use parallel mclapply已经 我知道我可以通过在集群上设置和运行它来获得进一步的收益 使用集群或获得更多的CPU不是我正在寻找
  • 预览MouseMove 与 MouseMove

    我有相当多的 XAML 经验 但最近我注意到我的大多数同事都使用预览鼠标移动代替鼠标移动事件 我一直用鼠标移动它对我很有帮助 但我忍不住问我什么时候应该使用预览鼠标移动什么时候鼠标移动 有什么区别 各自有什么优点和缺点等等 PreviewM

随机推荐

  • antlr 全局规则范围声明与 @members 声明

    在这种情况下 您更喜欢声明变量 全局作用域还是 members 声明 在我看来 他们可以达到同样的目的 UPDATE这是一个语法来解释我的意思 grammar GlobalVsScope scope global int i lexer h
  • 将最新的 EclipseLink 版本添加到 Netbeans 项目中?

    我正在使用 EclipseLink 作为使用 Netbeans 的持久性提供程序 使用 JPA 开发 JSF 应用程序 EclipseLink 的默认版本是 Netbeans 7 1 中的 2 0 但我非常需要为 eclipselink d
  • 在 Ruby 中按名称获取一个类?

    有一个包含模块和类名称的字符串 例如 Admin MetaDatasController 我如何获得实际课程 如果没有模块 以下代码将起作用 Kernel const get MetaDatasController 但它与模块中断 ruby
  • Android:删除整个数据库

    我想删除由我的应用程序创建的完整数据库 你知道有什么adb命令或者android语句可以做到这一点吗 您可以运行命令 adb s emulator 5554 shell or whatever port you use cd data da
  • 如何在 iOS 上删除配对的蓝牙设备?

    我希望我的应用程序可以删除配对的蓝牙设备 因为如果设备与 iPhone 配对 则该设备无法用于其他设备 我尝试了 CBCentralManager cancelPeripheralConnection 但它不起作用 他们仍然配对 或者还有其
  • 选择语句REF oracle

    我需要一些帮助来创建将使用引用的选择语句 我设法很好地插入了值 但是当我尝试使用 where 语句提取值时 输出要么是数据类型错误 要么会输出两个表以及它们都包含的数据 这只是一个例子 Create or replace table1 Ty
  • 在 jsconfig.json 中找不到“import-resolver-typescript/lib”错误

    Problem Error File Users nish7 Documents Code WebDev HOS frontend node modules eslint import resolver typescript lib not
  • 快速变化的集合 MVVM WPF - 高 CPU 使用率和 UI 几乎冻结

    我正在开发一个带有数据网格的应用程序 它显示某些正在运行的 Windows 进程 在我的示例 Chrome 进程中 当选中复选框时 数据网格会加载进程 要求 显示每个进程的名称 内存使用情况 私有工作集 的 实时 信息 就像在 Window
  • Raku rebles 和多个类别

    这是以下内容的后续内容 Raku rebless 不再适用于继承类 https stackoverflow com questions 59845201 我试图提出一个更复杂的用例 但无法让代码工作 这个想法是一个 Person 类 其中包
  • Selenium AttributeError:列表对象没有属性 find_element_by_xpath

    我正在尝试从网站上抓取一些营养数据 到目前为止一切似乎都进展顺利 直到我遇到格式略有不同的页面 使用 selenium 和这样的行 返回一个空列表 values browser find elements by class name siz
  • 当我们使用分页时,如何在 Antd Table 中为每一行设置序号

    我在我的 React js 项目中使用 Antd Table 我有一个表 其分页设置为每页 10 个条目 我的问题是 当我单击第二页时 我看到序列号再次从 1 开始 而不是 11 它不按顺序排列 这是我的代码 成分 function cre
  • PHP PDF生成问题

    我使用 FPDF 在 PHP 中创建 pdf 我使用会话变量将变量在一种表单之间传递到另一种表单 当我提供一个值时 Report php
  • Git 粒度——解决一行内的差异

    git 基于行的粒度或 diff 粒度是否可以增加到单词 字母分辨率 每行多条语句或使用 git 编写纯文本是值得的 根据评论重新阅读问题时 我想我明白了您最初的意思 所以我将给出一个真正的答案 与伊斯梅尔 巴达维的一行评论 https s
  • DynamoDb:删除具有相同哈希键的所有项目

    考虑下表 Table documentId Hash Key userId Range Key 如何编写代码来删除所有具有相同内容的项目documentId并且最好不取回物品 目前 您不能仅通过传递 Hash 键来删除所有项目 要删除项目需
  • YAML 中空字典的语法

    如何在 YAML 中表示空字典 IE 它在语义上应该等同于空的 json object 简短回答 使用 在 yaml 中有两种表示映射 字典 的方法 流映射 http www yaml org spec 1 2 spec html id27
  • Prism 应用程序关闭时不退出

    我正在学习棱镜 我遇到了一个问题 我制作了一款应用程序 与 Mike Taulty 制作的关于 Prism 的精彩教程中的应用程序非常相似 最大的区别是我的应用程序是 WPF 应用程序而不是 Silverlight 我发现我遇到了问题 当我
  • 如何在 ruby​​ on Rails 中的 haml 内的 js 设置会话变量?

    我通过 js 有表行着色 针对行组 我想让它通过会话变量记住阴影 我正在使用的 haml 部分有 Group Shading a href gt id gt row colors on On a href gt id gt row colo
  • 将文件夹中所有文本文件中与模式匹配的行提取到单个输出文件

    我试图提取文件夹中所有文件中以 开头的每一行 然后将这些行复制到单独的文本文件中 目前在 PowerShell 代码中使用此代码 但我没有得到任何结果 files Get ChildItem folder Filter txt foreac
  • CodeIgniter“找不到您请求的页面。”错误?

    我在使用 CodeIgniter 时遇到问题 我已经检查了互联网上所有可能的解决方案 似乎对我的情况没有任何帮助 我不是一个大专业人士 这是我第一次使用 CodeIgniter 所以不要对我严厉 路线 php route default c
  • C 中每 N 个元素中出现次数最多的元素

    我有一个大小为 0 8388608 的大数组 A 其中包含 相对较小 的整数 A i 0 131072 我想找到每个 N 32 个元素中最常出现的元素 什么会更快 A 创建一个大小为131072的关联数组B 迭代32个元素 递增B A i