三无排序如果有条件
问题描述:
在阅读的Java的一个初学者的书我偶然发现了一个练习:三无排序如果有条件
编写一个程序,在命令行 需要三个
int
值,并将它们打印升序排列。使用Math.min()
和Math.max()
。
问题是if
条件尚未考虑,因此在逻辑上我不能使用它们。
我试图在C中使用answer来解决类似的问题,但遇到了not a statement
错误。
public class three_sort
{
public static void main(String[] args)
{
int a = Integer.parseInt(args[0]);
int b = Integer.parseInt(args[1]);
int c = Integer.parseInt(args[2]);
int min = a;
(min > b) && (min = b); //finding minimum
(min > c) && (min = c);
System.out.println(min);
int i = a;
(b < max) && (b > min) && (i = b); // finding intermediate
(c < max) && (c > min) && (i = c);
System.out.println(i);
int max = a;
(max < b) && (max = b); //finding maximum
(max < c) && (max = c);
System.out.println(max);
}
}
是的,我没有用过Math.min
和Math.max
,因为与他们的帮助,我能找到的最小和最大,但找不到中间。 有谁知道如何解决这个问题?
答
不是一个完整的答案,但有些耐人寻味......
int a = 2;
int b = 5;
System.out.print(Math.min(a, b));
System.out.print(Math.max(a, b));
将按照升序打印a
和b
。你只需要概括这2倍以上的数字...
答
找到最小值和最大值后发现中间数:
int a = Integer.parseInt(args[0]);
int b = Integer.parseInt(args[1]);
int c = Integer.parseInt(args[2]);
int x = Math.min(a, b);
int min = Math.min(x,c);
int z = Math.max(a, b);
int max = Math.max(z, c);
int mid = a+ b+ c- min - max;
System.out.print(min);
System.out.print(mid);
System.out.print(max);
对此我已经回答了另一个问题here你可以看到它。
答
寻找最低是容易的,我们可以发现a
和b
之间的最小假设min_a_b
,然后最小min_a_b
和c
之间。最大的相同逻辑。
为了找到第二个更大,我们采取每对之间的最大值。如果我们这样做,我们将只取得第二大和第二大。所以我们把他们之间的最小
int min_a_b = Math.min(a, b);
int max_a_b = Math.max(a, b);
int max_b_c = Math.max(b, c);
int max_a_c = Math.max(a, c);
System.out.println(Math.min(min_a_b, c));
System.out.println(Math.min(Math.min(max_a_b, max_b_c), max_a_c));
System.out.println(Math.max(max_a_b, c));
+0
'Math.min'和'Math.max'只能用2个参数工作。 – Alexander 2015-02-08 13:13:58
看到我[这里](http://*.com/a/28035535/3208640)回答我首选3种方式为它 – jfun 2015-02-08 12:57:49
@RealSkeptic是看起来像重复。在问我的问题之前,我还没有找到答案。我如何删除我的问题? – Alexander 2015-02-08 13:07:42
如果您没有“删除”链接(可能会发生这种情况,因为您已经提供了有效答案),您可以将其标记为主持人注意并要求他们处理。 – RealSkeptic 2015-02-08 13:13:26