2021第四届[传智杯]练习赛
题目 2332: 信息学奥赛一本通T1181-整数奇偶排序
题目描述
给定10个整数的序列,要求对其重新排序。排序要求:
1.奇数在前,偶数在后;
2.奇数按从大到小排序;
3.偶数按从小到大排序。
输入格式
输入一行,包含10个整数,彼此以一个空格分开,每个整数的范围是大于等于0,小于等于30000。
输出格式
按照要求排序后输出一行,包含排序后的10个整数,数与数之间以一个空格分开。
样例输入
1
| 4 7 3 13 11 12 0 47 34 98
|
样例输出
1
| 47 13 11 7 3 0 4 12 34 98
|
解题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| import java.util.Scanner; import java.util.ArrayList; import java.util.Collections;
public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); ArrayList<Integer> even = new ArrayList<Integer>(); ArrayList<Integer> odd = new ArrayList<Integer>(); int next = 0; while (scanner.hasNext()) { next = scanner.nextInt(); if(next%2 == 0){ even.add(next); } else{ odd.add(next); }
} Collections.sort(odd,Collections.reverseOrder()); Collections.sort(even); printArray(odd); printArray(even); } public static void printArray(ArrayList<Integer> arr){ for(int i=0;i<arr.size();i++){ System.out.print(arr.get(i)+" "); } } }
|
题目 1856: 最小三个数
题目描述
现在我们有n个整数,请按从小到大的顺序,输出前3个数据。
输入格式
一行,一个n, 3<=n<=100。
输出格式
一行,输出前三个最小的数(末尾无空格)。
样例输入
样例输出
解题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| import java.util.Scanner;
public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int frequency = scanner.nextInt(); int[] intarr = new int[frequency]; for (int i=0;i<frequency;i++) { intarr[i] = scanner.nextInt(); } sort(intarr); printArrThree(intarr); } public static void printArrThree(int[] arr){ for(int i=0;i<3;i++){ System.out.print(arr[i]+" "); } } public static void sort(int[] arr){ int backup = 0; for(int i=0;i<arr.length;i++){ for(int j=0;j<arr.length-1;j++){ if(arr[j]>arr[j+1]){ backup = arr[j]; arr[j] = arr[j+1]; arr[j+1] = backup; } } } } }
|