小编dev*_*nes的帖子

在1.5秒内找到超过2000万个3到4个不同整数的中位数

我试图排序并找到一个只包含3到4个不同整数的整数字符串的中位数.

我正在处理的数字量大约为2千万到2千5百万,我应该对向量进行排序,每次将新整数添加到向量中时找到中位数,并将中位数添加到单独的"总计"变量中每次生成中位数时,它会汇总所有中位数.

1                   Median: 1              Total: 1
1 , 2               Median: (1+2)/2 = 1    Total: 1 + 1 = 2
1 , 2 , 3           Median: 2              Total: 2 + 2 = 4
1 , 1 , 2 , 3       Median: (1+2)/2 = 1    Total: 4 + 1 = 5
1 , 1 , 1 , 2 , 3   Median: 1              Total: 5 + 1 = 6
Run Code Online (Sandbox Code Playgroud)

我试图找到一种方法来进一步优化我的代码,因为它不够高效.(必须在2s左右处理)有没有人知道如何进一步加快我的代码逻辑?

我目前在C++中使用2个堆或优先级队列.一个用作最大堆,另一个用作最小堆.

数据结构中找到了寻找中位数的想法

You can use 2 heaps, that we will …
Run Code Online (Sandbox Code Playgroud)

c++ performance big-o median data-structures

5
推荐指数
1
解决办法
136
查看次数

标签 统计

big-o ×1

c++ ×1

data-structures ×1

median ×1

performance ×1