三无排序如果有条件

问题描述:

在阅读的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.minMath.max,因为与他们的帮助,我能找到的最小和最大,但找不到中间。 有谁知道如何解决这个问题?

+1

看到我[这里](http://*.com/a/28035535/3208640)回答我首选3种方式为它 – jfun 2015-02-08 12:57:49

+0

@RealSkeptic是看起来像重复。在问我的问题之前,我还没有找到答案。我如何删除我的问题? – Alexander 2015-02-08 13:07:42

+1

如果您没有“删除”链接(可能会发生这种情况,因为您已经提供了有效答案),您可以将其标记为主持人注意并要求他们处理。 – RealSkeptic 2015-02-08 13:13:26

不是一个完整的答案,但有些耐人寻味......

int a = 2; 
int b = 5; 
System.out.print(Math.min(a, b)); 
System.out.print(Math.max(a, b)); 

将按照升序打印ab。你只需要概括这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你可以看到它。

+0

非常适合整数,但对于双打它可以落在你的脚上... – glglgl 2015-02-08 13:05:46

+0

当然,我已经提到了其他方法,这些方法在我的另一个答案中,这些方法对双打没有问题 – jfun 2015-02-08 13:07:27

寻找最低是容易的,我们可以发现ab之间的最小假设min_a_b,然后最小min_a_bc之间。最大的相同逻辑。

为了找到第二个更大,我们采取每对之间的最大值。如果我们这样做,我们将只取得第二大和第二大。所以我们把他们之间的最小

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