day15 HJ58 输入n个整数,输出其中最小的k个(Java)

168 阅读1分钟

题目来源: HJ58 输入n个整数,输出其中最小的k个

题目描述:

  • 描述: 输入n个整数,找出其中最小的k个整数并按升序输出
    数据范围:  1n10001≤n≤1000  ,输入的整数满足  1val10000 1≤val≤10000
  • 输入描述: 第一行输入两个整数n和k,第二行输入一个整数数组
  • 输出描述: 从小到大输出最小的k个整数,用空格分开。
示例1:
输入:5 2
     1 3 5 7 2
输出:1 2

思路

通过双层for循环,将数组进行排序,输出前K个元素即可

具体实现:

import java.util.Scanner;

public class Main {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int k = scanner.nextInt();
        int[] arr = new int[n];
        for(int i = 0;i < n;i ++){
            arr[i] = scanner.nextInt();
        }
        for(int i = 0,m = 0;i < n;i++) {   //将数组排序
            for (int j = i + 1; j < n; j++) {
                if (arr[i] > arr[j]) {
                    int min = arr[j];
                    arr[j] = arr[i];
                    arr[i] = min;
                }
            }
        }
        for(int i = 0;i < k;i++){
            if(i == k-1){
                System.out.print(arr[i]);
            }else{
                System.out.print(arr[i]+" ");
            }
        }
    }
}

思路杂记

1.其实上面的代码就是暴力破解,对于数组排序,可以使用sort()方法,快捷方便。 Arrays.sort(数组名) 语法对数组进行排序,排序规则是从小到大,即升序,所以都不用调整,满足题意,可以直接使用

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int k = scanner.nextInt();
        int[] arr = new int[n];
        for(int i = 0;i < n;i ++){
            arr[i] = scanner.nextInt();
        }
        Arrays.sort(arr);  //使用sort()排序
        for(int i = 0;i < k;i++){
            if(i == k-1){
                System.out.print(arr[i]);
            }else{
                System.out.print(arr[i]+" ");
            }
        }
    }
}