C#中如何查找数组的众数? [复制]

2023-11-30

我想找到数组中的众数。我知道我必须执行嵌套循环来检查每个值并查看数组中元素出现的频率。然后我必须计算第二个元素出现的次数。下面的代码不起作用,请任何人帮助我。

for (int i = 0; i < x.length; i ++)
{
    x[i]++;
    int high = 0;
    for (int i = 0; i < x.length; i++)
    {
        if (x[i] > high)
        high = x[i];
    }
}

使用嵌套循环并不是解决这个问题的好方法。它的运行时间为 O(n^2) - 比最佳 O(n) 差得多。

您可以使用 LINQ 将相同的值分组,然后找到计数最大的组:

int mode = x.GroupBy(v => v)
            .OrderByDescending(g => g.Count())
            .First()
            .Key;

这既简单又快捷。但请注意(与 LINQ to SQL 不同),当仅需要第一个结果时,LINQ to Objects 当前不会优化 OrderByDescending。它对整个结果集进行完全排序,这是一个 O(n log n) 操作。

您可能需要这种 O(n) 算法。它首先在组中迭代一次以查找最大计数,然后再次查找该计数的第一个对应键:

var groups = x.GroupBy(v => v);
int maxCount = groups.Max(g => g.Count());
int mode = groups.First(g => g.Count() == maxCount).Key;

您还可以使用MaxBy对 MoreLINQ 方法进行扩展,进一步改进解决方案,使其只需要遍历所有元素一次。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#中如何查找数组的众数? [复制] 的相关文章

  • IIS应用程序池回收+quartz调度

    我正在 IIS 7 5 上运行一个 Web 应用程序 它需要偶尔回收 否则内存使用情况会失控 这是我正在研究的问题 当它回收时 它实际上不会运行 直到另一个请求到来 而quartz不会运行 有没有办法让IIS在回收应用程序池后立即自动启动1
  • Poco c++Net:Http 从响应中获取标头

    我使用 POCO C Net 库进行 http 我想尝试制定持久缓存策略 首先 我认为我需要从缓存标头中获取过期时间 并与缓存值进行交叉检查 如果我错了 请告诉我 那么我如何从中提取缓存头httpResponse 我已经看到你可以用 Jav
  • 如何在另一个应用程序中挂钩 api 调用

    我正在尝试挂钩另一个应用程序的 ExtTextOut 和 DrawTextExt GDI 方法调用 我知道我需要使用 GetProcAddress 来查找 gdi32 dll 中那些方法的地址 并用我的函数的地址覆盖我想要挂钩的进程中的地址
  • 在 OnModelCreating 期间设置列名称

    Issue 我目前正在尝试通过设置的属性为我的表及其列添加前缀 我正在使用实体框架核心 我已经正确地为表名添加了前缀 但我似乎无法弄清楚列的前缀 我有一种感觉 我需要使用反射 我已经留下了我的 可能很糟糕的 反思尝试 有人有办法在实体中设置
  • 有没有办法在 xcode 上使用 c++0x ?我想使用 gcc 4.4 或更高版本

    我想使用 gcc 4 4 或更高版本进行 iphone 开发 有人知道怎么做吗 不 你不知道 相信我 你不会 Apple 仍保留 gcc 4 2 1 因为 4 2 2 及更高版本使用 GPLv3 这意味着他们必须放弃对其平台的控制 对于 i
  • 检测wlan是否关闭

    任何人都可以给我一个提示 如何在 Windows Phone 上以编程方式检测 C 8 1 应用程序 不是 8 0 是否启用 禁用 WLAN 我不想更改这些设置 只是需要知道 该解决方案是一个 Windows 8 1 通用应用程序 Wind
  • 在 C# 中调用 C++ 库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有很多用 C 编写的库 我想从 C 调用这些库 但是 我遇到了很多问题 我想知道是否有书籍或指南告诉我如何做到这一点 Dll导入 htt
  • 运行需要 MySql.Data 的内置 .NET 应用程序

    我在运行我编写的内置 NET 应用程序时遇到问题 我的应用程序使用最新的 MySql 连接器 该连接器安装在我的系统上 当我尝试将其添加为引用时 该连接器显示为 NET 4 Framwork 组件 当我在环境中以调试模式运行应用程序时 一切
  • C# 5 async/await 线程机制感觉不对?

    为什么让调用线程进入异步方法直到内部 等待 一旦调用异步方法就生成一个线程 这不是更干净吗 这样您就可以确定异步方法会立即返回 您不必担心在异步方法的早期阶段没有做任何昂贵的事情 我倾向于知道某个方法是否要在 我的 线程上执行代码 不管是堵
  • 计算另一个表达式中的 C# 表达式

    我想在另一个表达式中使用一个表达式 Expression
  • 使用 LINQ 更新 IEnumerable 对象的简单方法

    假设我有一个这样的业务对象 class Employee public string name public int id public string desgination public int grade List
  • 使用查询表达式对 List 进行排序

    我在使用 Linq 订购这样的结构时遇到问题 public class Person public int ID get set public List
  • 将接口转换为其具体实现对象,反之亦然?

    在 C 中 当我有一个接口和几个具体实现时 我可以将接口强制转换为具体类型 还是将具体类型强制转换为接口 这种情况下的规则是什么 Java 和 C 中都允许这两个方向 向下转型需要显式转型 如果对象类型不正确 可能会抛出异常 然而 向上转换
  • 根据对象变量搜索对象列表

    我有一个对象列表 这些对象具有三个变量 ID 名称和值 这个列表中可能有很多对象 我需要根据ID或Name找到一个对象 并更改值 例子 class objec public string Name public int UID public
  • UI 函数在快速事件完成之前触发

    我有一个停靠在 Silverlight 应用程序中的 Web 浏览器框架 有时会在其上弹出全窗口 XAML Silverlight UI 元素 我已经或多或少修复了一个老问题 即 Web 框架的内容似乎与 Silverlight 内容不能很
  • 从BackgroundWorker线程更新图像UI属性

    在我正在编写的 WPF 应用程序中 我有一个 TransformedBitmap 属性 该属性绑定到 UI 上的 Image 对象 每当我更改此属性时 图像就会更新 因此显示在屏幕上的图像也会更新 为了防止在检索下一张图像时 UI 冻结或变
  • Project Euler #8,我不明白我哪里出了问题[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我正在做项目欧拉第八题 https projecteuler net problem 8 其中我得到了这个大得离谱的数字 7316
  • 英文日期差异

    接近重复 如何计算相对时间 https stackoverflow com questions 11 how do i calculate relative time 如何在 C 中计算某人的年龄 https stackoverflow c
  • .NET 4 的条件编译[重复]

    这个问题在这里已经有答案了 可能的重复 条件编译和框架目标 https stackoverflow com questions 2923210 c sharp conditional compilation and framework ta
  • 使用 using 声明时,非限定名称查找如何工作?

    根据 C 标准 这是格式错误还是格式良好 namespace M struct i namespace N static int i 1 using M i using N i int main sizeof i Clang 拒绝它 GCC

随机推荐

  • 装饰 Hex 函数以填充零

    我写了这个简单的函数 def padded hex i l given int i given len l hex result hex given int 2 remove 0x from beginning of str num hex
  • (;;) 和 while(); 有何用途? C 中的平均值 [重复]

    这个问题在这里已经有答案了 我正在查看一些示例代码 我看到有人这样做了 for 这相当于while 1 什么是while condition 做 我不明白放置背后的原因 代替 yes for 是一个无限循环
  • Pandas DataFrame:如何从自身引用行的多个子集?

    我想获得一个包含多个子集的数据框 例如 DataFrame data a 1 2 3 4 5 6 7 8 9 我想用 iloc 0 3 和 iloc 6 9 构建一个数据框 结果 DataFrame data a 1 2 3 6 7 8 目
  • C# 使用对象按值排序列表

    我正在尝试在 C 中创建对象的 有序 缓存 其中顺序由访问次数决定 我研究过 Dictionary SortedList 和 SortedDictionary 它们非常接近 但不太有我想要的东西 我想要一个包含所有以前缓存的项目的列表 这些
  • MFC 对话框控件的默认字体是什么?

    下图 放大 以便您更好地看到差异 显示了动态创建的编辑控件 上面的两个示例 和从对话框编辑器创建的编辑控件 下面的示例 之间的字体差异 如何使动态创建的 CEdit 控件的字体看起来像默认字体 下面的示例 我创建了如下 CEdit 控件 o
  • 使用 POI 的 XSSF 和 SAX(事件 API)读取 Excel 工作表

    我正在使用 POI 的 XSSF 和 SAX 事件 API 读取 Excel 工作表 Excel 工作表包含数千行用户信息 例如用户名 电子邮件 地址 年龄 部门等 我需要从 Excel 中读取每一行 将其转换为用户对象并将该用户对象添加到
  • 运行 ng build 时执行 JavaScript 文件

    我想每次运行时都在我的 Angular 应用程序中运行一个 JavaScript 文件ng build 更准确地说 我希望在构建过程之前执行此文件 以便它所做的更改出现在构建中 它是一个简单的脚本 用于读取应用程序版本及其依赖项并将它们写入
  • 无状态EJB实现接口注入失败

    野蝇8 2 0 我有一个StatelessEJB 和接口 Local Stateless public class Bean implements IBean Local public interface IBean 但我收到焊接错误 如果
  • UCS-2 Little Endian 到 UTF-8 的转换使文件中包含许多不需要的字符

    我有一个脚本 是在研究了许多不同的方法之后组合在一起的 我可以在 VBScript 中使用 ADODB 进行编码转换 Option Explicit Sub UTFConvert Dim objFSO objStream file file
  • 在 .NET 中获取执行 exe 路径的最佳方法是什么?

    从位于 c dir 的程序 a exe 中 我需要打开文本文件 c dir text txt 我不知道 a exe 位于何处 但 text txt 将始终位于同一路径中 如何从程序本身中获取当前正在执行的程序集的名称 以便我可以访问文本文件
  • 如果出现错误,如何更改图像来源?

    为什么下面的语句会抛出错误 Idea 显示来自普通 URL 的图像 如果未找到 404 则显示后备图像 完工 img height 200px class card img top 抛出错误 Parser Error Unexpected
  • C read() 线程安全吗?

    我正在编写一个程序 其中多个线程可能同时从文件中读取 没有线程写入该文件 但它们可能各自将其内容复制到单独的内存段 为了实现这一点 我需要使用一个 API 为我想要读取的文件提供一个文件描述符 我正在用 C 读取文件的块read功能 手册页
  • 如何在 ASP.Net 中实现自定义音频验证码

    我们使用 C Net 创建了一个自定义验证码生成器 现在我们需要升级我们的验证码以包含音频功能 听验证码 我们的主要限制是我们不能使用任何第三方组件 Dll 请指导我实现此类功能 提前致谢 我过去做过类似的事情 需要将背景噪音 器乐 与连接
  • 如何以编程方式在 WPF 中绘制箭头?

    我需要以编程方式在 WPF 中绘制箭头 我记得 Windows 窗体添加了原语来绘制箭头 设置Cap to the Pen mMyPen CustomEndCap new AdjustableArrowCap arrowSize arrow
  • 下拉列表应仅显示显示成员

    我已经绑定了一个集合ultracombo我已经指定了value member and display member 集合有很多列 现在我必须在显示中只显示一列 并将一列分配给value member 现在我看到了所有columns在集合中显
  • 如何使用类加载器从服务器加载类文件到客户端

    我有 nio 通道 我的客户端应该从服务器计算机加载类文件 它们的IP范围相同 我有两个在服务器和客户端计算机上常见的接口 以及在服务器计算机上实现接口的类 我在我的客户端机器上使用以下代码 但是当我运行它时会出现ClassNotFound
  • ` 获取值?' aria-label='如何使用字符串作为键从 `HashMap::<&'static str, u32>` 获取值?'> 如何使用字符串作为键从 `HashMap::<&'static str, u32>` 获取值?

    With a HashMap lt static str u32 gt 我如何从拥有的值中获取值String 操场 use std collections HashMap fn main let mut map HashMap lt sta
  • 环境特定配置文件中未定义配置

    当我在本地启动服务器时 我收到以下通知 please set config active support deprecation to log at config environments development rb 当我添加 confi
  • 有没有更好的方法根据文件类型映射命令调用[重复]

    这个问题在这里已经有答案了 从 Notepad 和 Notepad 切换到 vim 后 我才开始接触 vim 但在过去的四个月里我一直只使用它 在我的 vimrc 中 我有一个命令可以根据文件扩展名自动更改命令调用 例如 如果我正在编辑 R
  • C#中如何查找数组的众数? [复制]

    这个问题在这里已经有答案了 我想找到数组中的众数 我知道我必须执行嵌套循环来检查每个值并查看数组中元素出现的频率 然后我必须计算第二个元素出现的次数 下面的代码不起作用 请任何人帮助我 for int i 0 i lt x length i