一、代码要求
在不用java自带的数组函数array.sort();的情况下实现三个数字的排序。
二、代码实现
第一种用系统的方法行数最少如下:
/**
* Version 3.0 of sorted integers
*
* @Author An Lin
* @Version 13.04.2021
*/
import java.util.Locale;
import java.util.Scanner;
public class SortingOfThreeNumbersVersion3 {
public static void main(String[] args) {
//Create scanner object
Scanner input = new Scanner(System.in).useLocale(Locale.US);
//Prompt the user to enter numbers
System.out.print("Enter 3 Integers: ");
int num1 = input.nextInt();
int num2 = input.nextInt();
int num3 = input.nextInt();
//Create 3 variables: max, med, min to obtain these sorted numbers
int max, med, min;
max = Math.max(Math.max(num1,num2),Math.max(num2,num3));
min = Math.min(Math.min(num1,num2),Math.min(num2,num3));
med = (num1+num2+num3) - max -min;
//Display result
System.out.println("These numbers are sorted: "+ min+" " + med+" " + max);
}
}
第二种代码用方法实现如下:
/**
* this program can sort 3 integers with less lines than last program
*
* @Author An Lin
* @Version2.0 at 05.04.2020
*/
import java.util.Locale;
import java.util.Scanner;
public class SortingOfThreeNumbers2 {
public static void main(String[] args) {
//Create scanner object
Scanner input = new Scanner(System.in).useLocale(Locale.US);
//Prompt the user to enter numbers
System.out.print("Enter 3 Integers: ");
int num1 = input.nextInt();
int num2 = input.nextInt();
int num3 = input.nextInt();
//Create 3 variables: max, med, min to obtain these sorted numbers
int max, med, min;
max = getMax(getMax(num1,num2),getMax(num2,num3));
min = getMin(getMin(num1,num2),getMin(num2,num3));
med = (num1+num2+num3) - max -min;
System.out.println("These numbers are sorted: "+ min+" " + med+" " + max);
}
/**
* Create a method to get max from two numbers
* @param a
* @param b
* @return max of two numbers
*/
public static int getMax(int a, int b){
if(a >= b){
return a;
} else {
return b;
}
}
/**
* Create a method to get max from two numbers
* @param a
* @param b
* @return min of two numbers
*/
public static int getMin(int a, int b){
if(a >= b){
return b;
} else {
return a;
}
}
}
第三种复杂版代码如下(写了差不多90行):
/**
* this program can sort 3 numbers from the biggest one to the smallest one.
* But this method on my opinion is not very efficient,because i wrote almost 90 lines
* I am looking forward to finding a better way to sort these numbers
*
* @Author An Lin
* @Version1.0 at 05.04.2021
*/
import java.util.Locale;
import java.util.Scanner;
public class SortingOfThreeNumbers {
public static void main(String[] args) {
//Create scanner object
Scanner input = new Scanner(System.in).useLocale(Locale.US);
//Prompt the user to enter 3 numbers
System.out.print("Enter 3 numbers: ");
int number1 = input.nextInt();
int number2 = input.nextInt();
int number3 = input.nextInt();
//Sort these numbers
int max, med, min;
if (number1 > number2) {
if (number1 > number3) {
max = number1;
if (number2 > number3) {
med = number2;
min = number3;
System.out.println("The sorted numbers are: "+max+" "+med+" "+min);
} else {
med = number3;
min = number2;
System.out.println("The sorted numbers are: "+max+" "+med+" "+min);
}
} else {
max = number3;
med = number1;
min = number2;
System.out.println("The sorted numbers are: "+max+" "+med+" "+min);
}
} else if(number2 > number1){
if(number2 >number3){
max =number2;
if(number1 > number3){
med = number1;
min = number3;
System.out.println("The sorted numbers are: "+max+" "+med+" "+min);
} else {
med = number3;
min = number1;
System.out.println("The sorted numbers are: "+max+" "+med+" "+min);
}
} else {
max = number3;
med = number2;
min = number1;
System.out.println("The sorted numbers are: "+max+" "+med+" "+min);
}
} else if(number3>number1){
if(number3>number2){
max = number3;
if(number1>number2){
med = number1;
min = number2;
System.out.println("The sorted numbers are: "+max+" "+med+" "+min);
} else {
med = number2;
min = number1;
System.out.println("The sorted numbers are: "+max+" "+med+" "+min);
}
} else {
max = number2;
med = number3;
min = number1;
System.out.println("The sorted numbers are: "+max+" "+med+" "+min);
}
}
}
}
总结
感觉不用数组来实现代码要复杂得多,第一二种本人感觉还行,大家可以参考下,其中我还是参照了了下其他CSDN大佬的写法,感觉找无论是三个还是四个排序都可以用已找出的数字用总和去减他们,就能得到剩下的:
数字3 = 总和 - 数字1 - 数字2
四个数字排序以及五个数字排序都以此类推 。