我一次给出一个非常大的数字列表,我需要打印" 中位数 ".
更清楚的是,可以有" 125,000,000 "数字,并保证每个数字小于" 1.e + 18 ".
这是一场比赛,因此有内存限制(20 MB顶部)和时间限制(5秒顶部).
" 中位数 "是排序数字中间的数字.
例如,如果这是数字列表:
23
8
16
42
15
4
108
Run Code Online (Sandbox Code Playgroud)
排序后的数字:
1) 4
2) 8
3) 15
4) 16
5) 23
6) 42
7) 108
Run Code Online (Sandbox Code Playgroud)
" 中位数 "将是16;
所以我在互联网上搜索它,但我找不到任何通过这些限制的答案.
我的方法是获取所有数字,将它们保存在文本文件中,对它们进行排序,然后得到" 中位数 ".
因此,我想要优化其中一个想法,以便通过限制或通过这些限制的任何新想法.
我更喜欢使用第二个想法,因为与其他两个不同,它通过限制,但我不能这样做,因为我不知道如何在文本文件的中间插入一行.因此,如果我了解这一点,其余的过程将非常简单.
这是一个接收数字的函数,通过读取文件,找到它的最佳位置并将其放在那里.
事实上,它代表了我的第三个想法. …