mirror of
https://github.com/doocs/advanced-java.git
synced 2025-01-13 05:20:09 +08:00
parent
b5e4ff9a02
commit
d725b7d190
@ -57,7 +57,7 @@ class MedianFinder {
|
||||
#### 方法二:分治法
|
||||
分治法的思想是把一个大的问题逐渐转换为规模较小的问题来求解。
|
||||
|
||||
对于这道题,顺序读取这 5 亿个数字,对于读取到的数字 num,如果它对应的二进制中最高位为,则把这个数字写到 f1 中,否则写入 f0 中。通过这一步,可以把这 5 亿个数划分为两部分,而且 f0 中的数都大于 f1 中的数(最高位是符号位)。
|
||||
对于这道题,顺序读取这 5 亿个数字,对于读取到的数字 num,如果它对应的二进制中最高位为 1,则把这个数字写到 f1 中,否则写入 f0 中。通过这一步,可以把这 5 亿个数划分为两部分,而且 f0 中的数都大于 f1 中的数(最高位是符号位)。
|
||||
|
||||
划分之后,可以非常容易地知道中位数是在 f0 还是 f1 中。假设 f1 中有 1 亿个数,那么中位数一定在 f0 中,且是在 f0 中,从小到大排列的第 1.5 亿个数与它后面的一个数的平均值。
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user