标签:最小数 ret 最小的k个数 inpu 最小 public dex input ++
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
快排序的思想就是把a[begin] 交换到它属于的第k位
public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) { if(input == null) return null; ArrayList<Integer> list = new ArrayList<Integer>(k); if(k > input.length) return list; int low = 0; int high = input.length - 1; int index = partition(input,low,high); while(index != k-1){ if(index > k-1){ high = index - 1; }else{ low = index + 1; } index = partition(input,low,high); } for(int i = 0; i < k; i++){ list.add(input[i]); } return list; } //划分操作 public int partition(int[] array,int start,int end){ int pivot = array[start]; while(start < end){ while(start < end && array[end] >= pivot) end--; if(start<end) array[start++] = array[end]; while(start < end && array[start] <= pivot) start++; if(start<end) array[end--] = array[start]; } array[start] = pivot; return start; }
标签:最小数 ret 最小的k个数 inpu 最小 public dex input ++
原文地址:http://www.cnblogs.com/joshsung/p/7428533.html