如何获得数组中的 10 个最小值? [关闭]

Posted

技术标签:

【中文标题】如何获得数组中的 10 个最小值? [关闭]【英文标题】:How do I get the 10 lowest values in an array? [closed] 【发布时间】:2014-02-12 17:14:17 【问题描述】:

我有一个 double 类型的数组。如何获得 10 个最低值?

double values[1000];

这是我之前提出的:

double similar[num_img];
    copy(begin(values), end(values), begin(similar)); //copy values to another variable
    int elements = sizeof(similar) / sizeof(similar[0]);
    sort(similar, similar + elements);

这样我就可以获得 10 个值。但我真正追求的是索引。所以我猜它的排序没有帮助。

【问题讨论】:

***.com/questions/1042507/… 或者迭代,并尽可能存储最低的 10 个,用于 O(n) 方法。 不是让 SO 为你做,这是肯定的 @LightnessRacesinOrbit 你真的很棒! :) 我的意思是,标准的方式更干净。制作一个 tmp 数组,对其进行排序。找出 tmp 中的 10 个最小值。然后在您的数组中搜索这些值,并获取您的索引。 【参考方案1】:

Sort the array 并获取前 10 个元素(values[0]values[9])。

【讨论】:

这不是一个有效的解决方案,您的解决方案不能很好地处理具有相同值的多个记录,并且找到“10 个最低值”这与在排序中查找第一个或最后 10 个值不同容器。 @user2485710 OP 没有说它们必须是 distinct 值。该解决方案是完全有效的,即使它不是 you 会做/已经做过的。请重新考虑您的投票。 @user2485710 我认为这不公平。我会取最低的 10 个值来表示给定容器的最低 10 个元素。我没有看到任何明确性要求。 @femtoRgon 我的投票现在已锁定,但我仍然认为目的是找到 10 个不同的值,这不是解决方案。这也是一个重复的问题。 @user2485710 我编辑了我的问题

以上是关于如何获得数组中的 10 个最小值? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

编程之美 2.10寻找数组中的最大最小值

如何获得向量中的最大值或最小值?

如何获得向量中的最大值或最小值?

如何找到 MIPS 中的第二个最小值?

如何使用 pymxs 获得 3ds max 中的最小 XYZ 值?

如何获取数组的最小值,最大值? [复制]