最小的k个数

最小的K个数

http://www.nowcoder.com/questionTerminal/6a296eb82cf844ca8539b57c23e6e9bf

//只是用了简单快速排序 讲数组进行排序最后输出前k个

import java.util.ArrayList;

public class Solution {
    public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
          ArrayList arr = new ArrayList();
        if(k>input.length){
             return arr;
         }
            quickSort(input,0,input.length-1);

            for(int i =0 ;i<k;i++){
               arr.add(input[i]);
            }
            return arr ;

    }
    void quickSort(int []  arr ,int l,int r){
        if(l>r){
            return ;
        }
        int p = portion(arr,l,r);
        quickSort(arr,l,p-1);
        quickSort(arr,p+1,r);
    }
    int portion(int [] arr ,int l,int r){
        if(l<=r){
            int num = arr[l];
            int pviot = l;
            for(int j =l+1;j<=r;j++){
                if(arr[j]<num){
                    int temp = arr[++pviot];
                    arr[pviot] =arr[j];
                    arr[j] =temp ;
                }
            }
            int temp = arr[l];
            arr[l] = arr[pviot];
            arr[pviot] = temp;

            return pviot;
        }
        return 0;
    }
}
全部评论

相关推荐

07-28 00:10
已编辑
门头沟学院 算法工程师
码农索隆:这哥们库库在我帖子下评论
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务