[蓝蓝计算机考研算法训练二期]-day09

140 阅读1分钟

13、5个数求最值

设计一个从5个整数中取最小数和最大数的程序

  • 输入
    输入只有一组测试数据,为五个不大于1万的正整数
  • 输出
    输出两个数,第一个为这五个数中的最小值,第二个为这五个数中的最大值,两个数字以空格格开。

1、思路

使用选择排序即可,遍历一趟选出最小值,再遍历一趟选出最大值。

2、集体实现

Java实现

	public static int max(int[] num) {
		int max=num[0];
		for (int i = 0; i < num.length; i++) {
			if(max<num[i])
				max=num[i];
		}
		return max;	
	}
	public static int min(int[] num) {
		int min=num[0];
		for (int i = 0; i < num.length; i++) {
			if(min>num[i])
				min=num[i];
		}
		return min;	
	}
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		int[] num=new int[5];
		for (int i = 0; i < 5; i++) {
			num[i]=scanner.nextInt();
		}
		System.out.println(min(num));
		System.out.println(max(num));
		
	}

结果:
image.png

14、ASCI码排序

输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。

  • 输入
    第一行输入一个数N,表示有N组测试数据。后面的N行输入多组数据,每组输入数据都是占一行,有三个字符组成,之间无空格。
  • 输出
    对于每组输入数据,输出一行,字符中间用一个空格分开。

1、思路

根据输入的第一行的数来循环输入每行字符串,把每行字符串转换为字符数组,然后对字符数组进行排序,我选择了冒泡排序,然后把字符数组的每个字符按要求输出即可。

2、具体实现

java实现:

public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		int n=scanner.nextInt();
		char temp=' ';
		for(int i=0;i<n;i++) {
			char[] ch=scanner.next().toCharArray();
			for (int j = 0; j < ch.length; j++) {
				for (int k = 0; k < ch.length-j-1; k++) {
					if(ch[k]>ch[k+1]) {
						temp=ch[k];
						ch[k]=ch[k+1];
						ch[k+1]=temp;
					}
				}
			}
			System.out.println(ch[0]+" "+ch[1]+" "+ch[2]);			
		}
	}

结果:
image.png