最小的k个数
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4, 这道题最简单的思路就是把数组排好序,然后取前面的k个数就好了,但是这种算法的时间复杂度为O(N*logN),所以我们需要利用更快的方法来解决这个问题。 解法一:时间复杂度为O(N)的算法,只有当我们可以修改数组的时候才可以用 基于快排的思想,如果基于数组的第k个数字来调整,则使得比第k个数字小的所有数字都位于数组的左边,比第k个数字大的所有数字都位于数组的右边。这样调整之后,位于数组中左边的k个数字就是最小的k个数字了(不一定是排序的),所以之后我们还需要为其排序一次。 以下为该方法的参考代码: class Solution1 { /// <summary> /// 输出一个集合,集合包含传入的数组里最小的k个数 /// </summary> /// <param name="input"> 传入的数组 </param> /// <param name="k"> 要传回的最小数的个数 </param> /// <returns> 最小数排序后的集合 </returns> public List< int > GetLeastNumbers_Solution ( int [] input, int k) { List< int > list = new List<