剑指offer(二十三)之最小的K个数

题目描述

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

思路分析:

   从小到大进行冒泡排序

代码1:

<span style="font-family:SimSun;font-size:18px;">import java.util.ArrayList;
public class Solution {
    public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
        ArrayList list=new ArrayList();
        int len=input.length;
        if(len<k||k<0){
            return list;
        }
        int temp=0;
        for(int i=0;i<len-1;i++){
            for(int j=0;j<len-i-1;j++){
                if(input[j]>=input[j+1]){
                    temp=input[j];
                    input[j]=input[j+1];
                    input[j+1]=temp;
                }
            }
        }
        for(int z=0;z<k;z++){
            list.add(input[z]);
        }
        return list;
    }
}</span>

代码2

import java.util.ArrayList;
public class Solution {
    public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {
        ArrayList list=new ArrayList();
        int len=input.length;
        if(len<k||k<0){
            return list;
        }
        for(int i=0;i<k;i++){
            for(int j=0;j<len-i-1;j++){
                if(input[j]<input[j+1]){
                    int temp=input[j];
                    input[j]=input[j+1];
                    input[j+1]=temp;
                }
            }
            list.add(input[len-i-1]);
        }
        return list;
    }
}



你可能感兴趣的:(最小的k个数,剑指offer)