3つの値を正しい順序で並べて、コンソールに出力する必要があります。
解決策は、それらを配列に入れてから並べ替えることですが、(学校時代から)比較して順序付けする方が速いことを覚えていますが、正しい比較順序を見つけることができません。
if
3つの値を最小数のステートメントと比較する方法を教えてください。
バブルソートには、比較操作が3つしかなく、最悪の場合は6つの割り当てがあります(この場合の挿入ソートの動作と同じではないにしても、非常に似ています)。
if (a > b)
swap(a,b)
if (b > c)
swap(b,c)
if (a > b)
swap(a,b)
print a,b,c
n!=6
配列には順列が存在する可能性があるため、3回未満の比較では実行できません。ceil(log_2(n!)) = 3
これを最適化しても意味がありません。速度は上がりません。3のO(n!)は、まだ3 * 2=6回の演算です。O(2 ^ n)でさえ8になります。これらの3つの値をソートするために必要なことは何でも実行でき、パフォーマンスの違いはわかりません。
編集
int a, b, c, min, max, med;//assume values are there for a b c
if( a > b ){
if( a > c ){
max = a;
if( b > c ){
med = b;
min = c;
}else{
med = c;
min = b;
}
}else{
med = a;
max = c;
min = b;
}
}else{
if( b > c ){
max = b;
if( a > c ){
med = a;
min = c;
}else{
med = c;
min = a;
}
}else{
med = b;
max = c;
min = a;
}
}
私の知る限り、Javaはソートにクイックソートアルゴリズムを使用しています。これはすでに最適化されたアプローチです。ここで収穫するスピードはありません!