algorithm - 在数组中找到时间最短的中位数

标签 algorithm math data-structures

我有一个数组让我们说 a = { 1,4,5,6,2,23,4,2}; 现在我必须找到从 2 到 6(奇数总项)的数组位置的中位数,所以我所做的是,我将 a[1] 转换为 a[5]arr[0]arr[4] 中,然后我对它进行排序并将 arr[2] 写为中位数。

但每次我将值从一个数组放入另一个数组时,我的初始数组的值都保持不变。其次,我已经排序,所以这个过程花费了相当多的 **time**。 所以我想知道是否有任何不同的方法可以减少我的计算时间

需要了解的任何网站、 Material 、内容以及如何做?

最佳答案

使用 std::nth_element 来自 <algorithm>这是 O(N):

nth_element(a, a + size / 2, a + size);
median = a[size/2];

关于algorithm - 在数组中找到时间最短的中位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11065066/

相关文章:

java - 如何在 Java 中获得两个具有容差的 HashMap 的交集?

java - 完美数程序java

c# - 多个线程从 Lookup<TKey, TElement> 中读取是否安全?

c++ - 将 QByteArray 中的数据放入 Struct

Java 浮点文字与 C#

algorithm - 用于保存和检索平面中的点的数据结构

javascript - 如何检查数组元素是否匹配某些模式(例如 :XXXXYY)?

算法:打印字符序列的正确索引

c - 二叉搜索树中节点的删除

python - 检查两个图像的 RGB 值之间的差异