其实吧,这个问题问出来是没有答案的,因为在实际业务中会有很多种使用场景,我们需要按场景来分类才能得到真正的问题
必须要服务端全局有序的
数据量小的时候,直接快排
数据量较大时候,对数据做分段,然后归并排序
不需要服务端全局有序的
数据直接交付client处理排序
而client有区分是否是强力PC使用还是弱计算能力的计算设备
除了以上,还要区分,要求一直有序还是说,最后输出的时候有序,还是说其他需求
以面试时候提到的跳一跳排名来说,其实根本没有服务端排序这个事情,小程序获取成绩应该是三个步骤:
- 获取用户列表中已开通跳一跳的用户
- 获取步骤1中所有user的成绩
- 对成绩按大小倒序排
就会发现和前K大这个问题没有任何关联。。。
总的来说。。我发现面试的数据结构题目对于强人和应试型人才很有优势。。but,我这种经常是时候脑袋一转发现不对的人来说是很难的。。。毕竟我的注意力也不在这里面。。