java代码只需要6个步骤就可以从5个数字中找到最大和最小的数字(不是从数组中),每个步骤需要在2个数字之间交换

java代码只需要6个步骤就可以从5个数字中找到最大和最小的数字(不是从数组中),每个步骤需要在2个数字之间交换,java,numbers,swap,Java,Numbers,Swap,我想使用2个数字之间的交换格式,以便在用户给定的5个数字中找到最大和最小的数字。 我只想用6个步骤,但我每次都达到了更多。对如何修复我的代码有什么建议吗 Scanner myScanner = new Scanner(System.in); int a = myScanner.nextInt(); int b = myScanner.nextInt(); int c = myScanner.nextInt(); int d = myScanner.nextInt(); int e = mySc

我想使用2个数字之间的交换格式,以便在用户给定的5个数字中找到最大和最小的数字。 我只想用6个步骤,但我每次都达到了更多。对如何修复我的代码有什么建议吗

Scanner myScanner = new Scanner(System.in);

int a = myScanner.nextInt();
int b = myScanner.nextInt();
int c = myScanner.nextInt();
int d = myScanner.nextInt();
int e = myScanner.nextInt();
int tmp;

if (a > b) {
  tmp = b;
  b = a;
  a = tmp;
}

if (c > d) {
  tmp = c;
  c = d;
  d = tmp;
}

if (a > c) {
  tmp = a;
  a = c;
  c = tmp;
}

if (b > d) {
  tmp = b;
  b = d;
  d = tmp;
}

if (d > e) {
  tmp = d;
  d = e;
  e = tmp;
}

if (c > e) {
  tmp = c;
  c = e;
  e = tmp;
}

if (b > e) {
  tmp = b;
  b = e;
  e = tmp;
}

System.out.println(a);
System.out.print(e);

您有一个重复的代码片段。如果您删除冗余代码,这将起作用

import java.util.Scanner;

public class UshtrimeRekursive {
    public static void main(String[] args){
        Scanner myScanner = new Scanner(System.in);

        int a = myScanner.nextInt();
        int b = myScanner.nextInt();
        int c = myScanner.nextInt();
        int d = myScanner.nextInt();
        int e = myScanner.nextInt();
        int tmp;

        if (a > b) {
            tmp = b;
            b = a;
            a = tmp;
        }

        if (c > d) {
            tmp = c;
            c = d;
            d = tmp;
        }

        if (a > c) {
            tmp = a;
            a = c;
            c = tmp;
        }

//        if (b > d) {
//            tmp = b;
//            b = d;
//            d = tmp;
//        }

        if (d > e) {
            tmp = d;
            d = e;
            e = tmp;
        }

        if (c > e) {
            tmp = c;
            c = e;
            e = tmp;
        }

        if (b > e) {
            tmp = b;
            b = e;
            e = tmp;
        }

        System.out.println(a);
        System.out.print(e);
    }


}

您有一个重复的代码片段。如果您删除冗余代码,这将起作用

import java.util.Scanner;

public class UshtrimeRekursive {
    public static void main(String[] args){
        Scanner myScanner = new Scanner(System.in);

        int a = myScanner.nextInt();
        int b = myScanner.nextInt();
        int c = myScanner.nextInt();
        int d = myScanner.nextInt();
        int e = myScanner.nextInt();
        int tmp;

        if (a > b) {
            tmp = b;
            b = a;
            a = tmp;
        }

        if (c > d) {
            tmp = c;
            c = d;
            d = tmp;
        }

        if (a > c) {
            tmp = a;
            a = c;
            c = tmp;
        }

//        if (b > d) {
//            tmp = b;
//            b = d;
//            d = tmp;
//        }

        if (d > e) {
            tmp = d;
            d = e;
            e = tmp;
        }

        if (c > e) {
            tmp = c;
            c = e;
            e = tmp;
        }

        if (b > e) {
            tmp = b;
            b = e;
            e = tmp;
        }

        System.out.println(a);
        System.out.print(e);
    }


}

我不确定以下代码是否可以被接受为满足“步骤”数量的要求,因为它包含7个交换操作,但实际上只会发生3或4个交换。此外,交换是在没有临时变量的情况下实现的,使用基于XOR的一行程序:

Random Random=new Random();
//生成随机值而不是用户输入
int a=随机的nextInt(1000);
int b=随机的nextInt(1000);
int c=随机的nextInt(1000);
int d=随机的nextInt(1000);
int e=随机的nextInt(1000);
System.out.println(Arrays.asList(a,b,c,d,e));
if(ee){
b=(e^=b^=e)^b;
}
if(ce){
c=(e^=c^=e)^c;
}
if(de){
d=(e^=d^=e)^d;
}
System.out.println(“min=“+a”);
System.out.println(“max=“+e”);
System.out.println(Arrays.asList(a,b,c,d,e));
示例输出

[629, 941, 339, 496, 366]
min = 339
max = 941
[339, 629, 366, 496, 941]

我不确定以下代码是否可以被接受为满足“步骤”数量的要求,因为它包含7个交换操作,但实际上只会发生3或4个交换。此外,交换是在没有临时变量的情况下实现的,使用基于XOR的一行程序:

Random Random=new Random();
//生成随机值而不是用户输入
int a=随机的nextInt(1000);
int b=随机的nextInt(1000);
int c=随机的nextInt(1000);
int d=随机的nextInt(1000);
int e=随机的nextInt(1000);
System.out.println(Arrays.asList(a,b,c,d,e));
if(ee){
b=(e^=b^=e)^b;
}
if(ce){
c=(e^=c^=e)^c;
}
if(de){
d=(e^=d^=e)^d;
}
System.out.println(“min=“+a”);
System.out.println(“max=“+e”);
System.out.println(Arrays.asList(a,b,c,d,e));
示例输出

[629, 941, 339, 496, 366]
min = 339
max = 941
[339, 629, 366, 496, 941]