代码最小堆,查找k最小值

import java.util.ArrayList;
import java.util.List;
public class Solution {

    private ArrayList<Integer> heapSort(int[] ins, int k){
        int n = ins.length;
        for(int i = (n-1)/2;i>=0;i--){
            adjustHeap(ins, i, n);
        }

        ArrayList<Integer> ans = new ArrayList<>();
        int tmp;
        for(int i=n-1;i>n-k-1;i--){
            ans.add(ins[0]);
            tmp = ins[0];
            ins[0] = ins[i];
            ins[i] = tmp;
            adjustHeap(ins, 0, i);
        }
        return ans;
    }

    private void adjustHeap(int[] ins, int parent,int n){
        int cur = ins[parent];
        int lchild = parent*2+1;
        while(lchild<n){
            int rchild = lchild+1;
            while(rchild<n&&ins[lchild]>ins[rchild]){
                lchild++;
            }
            if(cur<ins[lchild]){
                break;
            }
            ins[parent] = ins[lchild];
            parent = lchild;
            lchild = parent*2+1;
        }
        ins[parent] = cur;
    }

    public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
        ArrayList<Integer> res = new ArrayList<>();
        if(input==null||input.length==0){
            return res;
        }
        if(k<=input.length){
            res = heapSort(input, k);
        }
        return res;
    }




}