中国移动客服中心 认领
计算机/互联网/通信/电子 北京 100-500人 外企代表处
从N个数中找出第K大的数,如果K个数可以读进内?
分析:明显是一道工程性很强的题目,和一般的查找中位数的题目有几点不同。1. 原数据不能读进内存,不然可以用快速选择,如果数的范围合适的话还可以考虑桶排序或者计数排序,但这里假设是32位整数,仍有4G种取值,需要一个16G大小的数组来计数。2. 若看成从N个数中找出第K大的数,如果K个数可以读进内存,可以利用最小或最大堆,但这里K=N/2,有5G个数,仍然不能读进内存。3. 接上,对于N个数和K个数都不能一次读进内存的情况,《编程之美》里给出一个方案:设k
正在加载验证码...
进行了难度一般1对1面试
面试问题
从N个数中找出第K大的数,如果K个数可以读进内?
面试过程
分析:明显是一道工程性很强的题目,和一般的查找中位数的题目有几点不同。1. 原数据不能读进内存,不然可以用快速选择,如果数的范围合适的话还可以考虑桶排序或者计数排序,但这里假设是32位整数,仍有4G种取值,需要一个16G大小的数组来计数。2. 若看成从N个数中找出第K大的数,如果K个数可以读进内存,可以利用最小或最大堆,但这里K=N/2,有5G个数,仍然不能读进内存。3. 接上,对于N个数和K个数都不能一次读进内存的情况,《编程之美》里给出一个方案:设k