【发布时间】:2012-01-01 05:18:27
【问题描述】:
使用按位或比较运算符对五个整数进行排序可以通过以下方式实现:首先获取最大的数字,然后是第二大的数字,然后是第三大的数字,依此类推。
这是我获得最高数字的代码:
#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;
}
我认为使用这种方法可以获得第二、第三、第四和第五高的数字。
有没有其他方法可以使用比较/位运算符获得五个整数的中位数?任何其他组合方法都可能有效。
顺便说一下,我打算用硬件实现这个算法。
在排序中使用组合方法会比使用状态机快。
【问题讨论】:
-
以前从未听说过排序网络。我会试试看,谢谢你的链接。
标签: c sorting combinatorics verilog median