《剑指offer》JZ29最小的K个数

    技术2022-07-10  143

    输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。

    解析:插入排序吧,此题方法很多,初步先用一种方法

    代码:

    import java.util.*; public class Solution {     public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {         ArrayList<Integer> res = new ArrayList<>();         if(k <= 0 || k > input.length){             return res;         }         //对前k个数使用插入排序         for(int i = 1; i < k; i++){             int j = i - 1;             int unFindElement = input[i];             while(j >= 0 && input[j] > unFindElement){                 input[j+1] = input[j];                 j--;             }             input[j+1] = unFindElement;         }         //对后边的数与前k个比较,利用插入排序         for(int i = k ; i < input.length; i++){             if(input[i] < input[k-1]){                 int newK = input[i];                 int j = k-1;                 while(j >= 0 && input[j] > newK){                     input[j+1] = input[j];                     j--;                 }                 input[j+1] = newK;             }         }         for(int i = 0; i < k; i++){             res.add(input[i]);         }         return res;              } }

    Processed: 0.012, SQL: 9