java代码只需要6个步骤就可以从5个数字中找到最大和最小的数字(不是从数组中),每个步骤需要在2个数字之间交换
我想使用2个数字之间的交换格式,以便在用户给定的5个数字中找到最大和最小的数字。 我只想用6个步骤,但我每次都达到了更多。对如何修复我的代码有什么建议吗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
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]