[TOC]
南阳OJ-No.31 时间限制3000ms,内存限制65535KB,难度1
描述 设计一个从5个整数中取最小数和最大数的程序
输入 输入只有一组测试数据,为五个不大于1万的正整数
输出 输出两个数,第一个为这五个数中的最小值,第二个为这五个数中的最大值,两个数字以空格格开。
样例输入
1 2 3 4 5
样例输出 1 5
总的来说此题比较简单,方法较多 思路1:构建一个数组读取输入,然后用排序方法进行排序,具体效率就排序算法而言。 思路2:设置标记变量,最大值和最小值,对输入的数进行比较,大取更大,小取更小。
JAVA
思路1,No.1- 希尔排序|其他排序方法类似,此处不再讨论时间3,内存61
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 import java.util.Scanner; public class Main { public static Scanner cin = new Scanner(System.in); public static int[] num = new int[5]; public static void main(String[] args) throws Exception{ for (int i=0; i<5; i++) { num[i] = cin.nextInt(); } shellSort(num); System.out.println(num[0] + " " + num[4]); } public static void shellSort(int[] a) { for (int d=a.length/2; d>0; d/=2) { for (int i=d; i<a.length; i++) { int temp = a[i], j = i - d; while (j >= 0 && temp < a[j]) { a[j+d] = a[j]; j -= d; } a[j+d] = temp; } } } }
思路2时间3,内存61
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 import java.util.Scanner; public class Main { public static Scanner cin = new Scanner(System.in); public static int num, m, n; public static void main(String[] args) throws Exception{ num = cin.nextInt(); m = n = num; for (int i=0; i<4; i++) { num = cin.nextInt(); if (num > m) { m = num; continue; } if(num < n) { n = num; continue; } } System.out.println(n + " " + m); } }
C++ 时间4,内存240
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 #include<iostream> using namespace std; int main() { int num, max, min; cin >> num; max = min = num; for(int i=0; i<4; i++) { cin >> num; if (num > max) { max = num; continue; } if(num < min) { min = num; continue; } } cout << min << " " << max; return 0; }