我有一个数组让我们说 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/