如何获得数组中的 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 个最小值? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章