算法,找出数组中最小的 K 个数,以任意顺序返回 K 个数

import java.util.PriorityQueue;

public class smallestK {
/**
* 设计一个算法,找出数组中最小的 K 个数,以任意顺序返回 K 个数均可
* 输入: arr = [1,3,5,7,2,4,6,8]
* 输出: [1,2,3,4]
*/
public static int[] smallestK(int[] array,int k) {

    int[] ret = new int[k];
    if (array == null || k <= 0) {
        return null;
    }
    PriorityQueue priorityQueue = new PriorityQueue<>();

    for (int i = 0; i < array.length; i++) {
        priorityQueue.offer(array[i]);  // 按照优先级存放
    }

    for (int i = 0; i < k; i++) {
        ret[i] = priorityQueue.poll();  // 弹出元素
    }
    return ret;
}

}

你可能感兴趣的:(算法,找出数组中最小的 K 个数,以任意顺序返回 K 个数)