设有一组N个数的数组,要确定其中第K个最大者,我们称之为选择问题。来看看解决此问题的思路。
思路1:最直白的思路便是将数组排序,然后获取第K个数。排序算法则有很多选择。如果选择快速排序,则该”选择问题“的时间复杂度即为快排的时间复杂度:O(nlogn)
思路2:首先将前K个数读入数组,并排好序。然后再依次读入剩下的N-k个数,如果读入的数小于第K个元素则忽略,否则将其插入到数组中正确位置,同时将数组中的一个元素挤出数组。当算法终止时,第k个位置上的数即为所求。
Powered by: 博客园 Copyright © 2024 刺猬的温驯 Powered by .NET 8.0 on Kubernetes