一、在N个数中,寻找最大的K个数
这里只考虑K不等于1的情况,K = 1时,可以通过N - 1次比较和交换得到结果。
1. N不大的情况下,几千个左右。
① 先排序,快速排序或者堆排序,平均复杂度为O(N*log2N),再取出前K个,O(K)。总时间复杂度,O(N*log2N) + O(K) =O(N*log2N) ;
② 若K <= log2N,可以进行部分排序(选择排序和冒泡排序)。把N个数中的前K个数排序出来,复杂度是O(N*K);
③ 寻找N个数中最大的K个数,本质上就是寻找最大的K个数中最小的那个,也就是第K大的数。然后再遍历一次