题目来源: HJ58 输入n个整数,输出其中最小的k个
题目描述:
- 描述: 输入n个整数,找出其中最小的k个整数并按升序输出
数据范围: ,输入的整数满足 - 输入描述: 第一行输入两个整数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]+" ");
}
}
}
}