题目描述
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的5个数字是1,2,3,4,5。
思路:快速排序的思想,
分析:
方法一,用快速排序的partition()方法,寻找分割点
通过一趟排序将要排序的数据分割成独立的两部分,分割点左边都是比它小的数,右边都是比它大的数。
分割点及其左边的数字构成一个数组A,数组长度为index+1;
1.1 当理想情况是index+1=k,说明刚好是该数组A;
1.2 index+1>k,说明需要的k个数字在分割点左边;需要剔除分割点,在左边数组继续寻找;
if(index>k-1){
end=index-1;index=partition(input,start,end);}
1.3 index+1<k,说明需要的k个数字不仅包含A,而且还有分割点右边最小的若干个数字,需要继续寻找
{