经典问题,3种解法: 先排序,再取前k个数,平均时间复杂度O(nlogn) 使用最小堆,建堆完成后依次交换第一个和第i个元素(i=n,n-1,...,n-k)得到k个最小值,平均时间复杂度O(n+k) 使用快排的patition子程序,逐步逼近第k个数所在的位置,期望平均时间复杂度O(n),但是前k个数并不是有序状态这题并不要求最后的结果有序,所以用第三种方法是最好的,为避免最坏情况,每次patition的基准元素随机选择这里不写具体的实现过程,因为是用C++,这里可以直接用STL提供的排序函数其中:1)若需对vector, string, deque, 或array容器进行全排序,你可选择...