Tag: 中位数

比较数字然后得到中值

使用按位或比较运算符对五个整数进行排序可以通过首先得到最高数,然后是第二高,然后是第三个来实现,依此类推。 以下是获取最高编号的代码: #include 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) : […]

标准排序网络,用于n的小值

我正在寻找一个5元素排序的排序网络实现,但由于我在SO上找不到好的参考,我想要求为所有小的n值排序网络,至少n = 3通过n = 6但更高的值也会很大。 一个好的答案至少应该将它们列为“交换”(在2个元素上排序)操作的序列,但是在低阶排序网络方面看到递归分解也可能会很好。 对于我的应用程序,我实际上只关心5个元素的中位数,而不是实际按顺序排列。 也就是说,只要中位数在正确的位置结束,结果中可能未指定其他4个元素的顺序。 可以使用与排序网络相关的方法来计算交换数量少于执行完整排序的中位数吗? 如果是这样,我的问题(对于n = 5)和其他情况的这种解决方案也会得到一个很好的答案。 (注意:我已经标记了这个问题C,因为C是我使用的语言,我怀疑跟随C标签的人有很好的答案,但我真的不在乎答案实际上是用C语言编写而不是伪代码只要符合上述标准,它就可以很容易地转换为C语言。)