ビットごとの演算子または比較演算子を使用して 5 つの整数を並べ替えるには、最初に最大の数値を取得し、次に 2 番目に大きい数値、3 番目の数値を取得するというように行います。
最大数を取得するための私のコードは次のとおりです。
#include <stdio.h>
int main() {
int a, b, c, d, e;
int aa, bb, cc, dd, ee;
a = 4; b = 2; c = 5; d = 1; e = 3;
aa = (a > b) ?
((a > c) ? ((a > d) ? ((a > e) ? a : e) : ((d > e) ? d : e)) :
((c > d) ? ((c > e) ? c : e) : ((d > e) ? d : e))) :
((b > c) ? ((b > d) ? ((b > e) ? b : e) : ((d > e) ? d : e)) :
((c > d) ? ((c > e) ? c : e) : ((d > e) ? d : e)));
printf("highest: %d\n", aa);
return 0;
}
この方法を使えば、2 番目、3 番目、4 番目、5 番目に高い数値を取得できると思います。
比較/ビットごとの演算子を使用して 5 つの整数の中央値を取得する他の方法はありますか? 他の組み合わせ方法が有効な場合があります。
ところで、このアルゴリズムをハードウェアに実装します。
並べ替えに組み合わせ法を使用すると、ステート マシンを使用するよりも高速になります。