君子博学而日参省乎己 则知明而行无过矣

博客园 首页 新随笔 联系 订阅 管理

设有一组N个数的数组,要确定其中第K个最大者,我们称之为选择问题。来看看解决此问题的思路。

思路1:最直白的思路便是将数组排序,然后获取第K个数。排序算法则有很多选择。如果选择快速排序,则该”选择问题“的时间复杂度即为快排的时间复杂度:O(nlogn)

思路2:首先将前K个数读入数组,并排好序。然后再依次读入剩下的N-k个数,如果读入的数小于第K个元素则忽略,否则将其插入到数组中正确位置,同时将数组中的一个元素挤出数组。当算法终止时,第k个位置上的数即为所求。

posted on 2014-06-21 14:20  刺猬的温驯  阅读(324)  评论(0编辑  收藏  举报