在c ++中有效地对数组进行排序的方法

时间:2015-03-26 01:22:40

标签: c++ c++11

假设我有一个已排序的浮点数组a [0],...,a [n-1]。

我得到一个数字m<<n,表示等间隔的数量。如何有效地找到包含最多数字的bin的上边界?

2 个答案:

答案 0 :(得分:3)

每个区域都有(a[n-1] - a[0]) / m个值 - 如果有的话会四舍五入。您需要对数据进行一次传递,在此过程中,您将确定数据是否越过bin边界,如果是,则重置bin-in-bin计数器,否则递增该计数器。在重置之前和结束之前 - 如果bin-bin中的数字是你所见过的最大值,请在你人口最多的bin“solution”解决方案变量中记录bin的上边界。

答案 1 :(得分:1)

Tony D发布的答案并不是最有效的。为每个休息值调用lower_bound更有效。然后,成本将是O(mlog n)而不是O(n)。