描述
输入整型数组和排序标识,对其元素按照升序或降序进行排序
数据范围: 1≤n≤1000 ,元素大小满足 0≤val≤100000
输入描述:
第一行输入数组元素个数
第二行输入待排序的数组,每个数用空格隔开
第三行输入一个整数0或1。0代表升序排序,1代表降序排序
输出描述:
输出排好序的数字
示例1
输入:
8 1 2 4 9 3 55 64 25 0
输出:
1 2 3 4 9 25 55 64
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int n = sc.nextInt();//接收数组长度
int[] arr = new int[n];//创建数组
for (int i = 0; i < n; i++) {//数组填入
arr[i] = sc.nextInt();
}
int flag = sc.nextInt();//接收排序标识
Arrays.sort(arr);//数组排序
if (flag == 0) {//正序输出
for(int i =0; i < arr.length; i++){
System.out.print(arr[i] + " ");
}
}
else {//逆序输出
for(int i = arr.length - 1; i >= 0; i--){
System.out.print(arr[i] + " ");
}
}
}
}
}
Scanner有多次输入,且存在输入数字组成数组的情况 建议使用while(sc.hasNext()) 判断是否存在下次输入,并按业务录入数字组成数组
Arrays.sort方法可以对Integer数组 按Comparator自定义比较器执行排序,注意参数o1,o2, 左-右(o1-o2)是升序排序; 右-左(o2-o1)是降序排序;
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
//有多次输入,且存在输入数字组成数组的情况
while(sc.hasNext()){
//第一行输入数组元素个数
int arrCount = sc.nextInt();
//第二行输入待排序的数组,每个数用空格隔开
Integer[] arr = new Integer[arrCount];
//录入 arrCount 个 数字,组成数组
for(int i=0;i<arrCount;i++){
arr[i] = sc.nextInt();
}
//第三行输入一个整数0或1。0代表升序排序,1代表降序排序
int flagSort = sc.nextInt();
if(flagSort==0){
Arrays.sort(arr,new Comparator<Integer>(){
public int compare(Integer o1 ,Integer o2){
return o1-o2;
}
});
}
if(flagSort==1){
Arrays.sort(arr,new Comparator<Integer>(){
public int compare(Integer o1 ,Integer o2){
return o2-o1;
}
});
}
for(Integer m : arr){
System.out.print(m + " ");
}
break;
}
System.out.println();
}
}