学习小组结伴

it2023-09-16  68

题目内容:

为了促进互帮互相,决定成立学习小组。小组结伴的规则是这样的:先将学号按升序排列,排在最前的一个人和排在最后的那个人结成同伴,排在第2个的与排在倒数第2个的结成同伴…依次类推,2个一组成同伴。

输入格式:

第一行是一个整数n,表明n个同学。(2<=n<=50,n为偶数) 。 第二行n个整数表明n个同学的学号,学号之间有一个空格,学号是无序输入的。 如果输入的学生数是奇数,则输出提示信息:“odd number”

输出格式:

共n/2行,每行二个整数,表明结伴同学的学号,两个学号之间有一个空格。

输入样例:

8 15 6 24 12 13 21 8 4

输出样例:

4 24 6 21 8 15 12 13

思路:

本道题关键难点在于全排列,排序排好之后,将第0个与最后一个,第1个与最后一个-1个输出就完成了。 排序 排序算法对于初学者有一些难度,这里提供链接十大经典排序算法最强总结,感兴趣的可以自己思考,这里讲述最基础和最取巧的两种办法。 最基础的办法是冒泡排序

int[] intArray = new int[]{11, 41, 5, 451, 2, 21, 122, 535, 352}; for (int i = 0; i < intArray.length; i++) { for (int j = 0; j < intArray.length - 1 - i; j++) { if (intArray[j] > intArray[j + 1]) { intArray[j] ^= intArray[j + 1]; intArray[j + 1] ^= intArray[j]; intArray[j] ^= intArray[j + 1]; // 两次异或交换数值,仅限整形 } } } System.out.println(Arrays.toString(intArray));

最取巧的办法直接用java自带的Arrays#sort方法 Arrays#sort方法在JDK很早的版本就已经存在,比赛中基本都可以用的出来,而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(); if(n%2 != 0){ System.out.println("odd number"); System.exit(0); } int[] line = new int[n]; for(int i = 0;i < n;i++){ line[i] = scanner.nextInt(); } Arrays.sort(line); int i = n / 2; for(int k = 0; k< i;k++){ System.out.println(line[k] + " "+ line[n - 1 - k]); } } }
最新回复(0)