关于笔试中的Top k问题
摘要:
Top -k问题就是给一组数,要求找出其中最大的k个数,或者最小的k个数。比方说这个题目:给定一组整数:23 1 2 45 44 14 25 33 这8个数,要求最小的3个数。即:1 2 14下面说下几种思路和最常用的一种解法:一:把这组数进行整体升序排序,排好序之后,就直接输出前三个数 这种思路,算法的优化就在排序问题上了。如果要最优的,自然不会用冒泡排序了(O(n*n)),可以是shell排序(O(n^3/2)),快速排序、堆排序、归并排序(O(nlogn)) 所以整体上会花费的时间为:排序+O(k)二:使用堆结构 这里如果要求最小的k个数,就建立规模为k的大根堆; 如果求最大的k个数,自 阅读全文
posted @ 2011-09-24 16:56 挑战自我,积极向上 阅读(832) 评论(1) 推荐(0)
浙公网安备 33010602011771号