三个数字排序【不用数组】

一、代码要求

在不用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

四个数字排序以及五个数字排序都以此类推 。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值