How do I calculate the “median of five” in C#?

后端 未结 10 2063
遇见更好的自我
遇见更好的自我 2020-12-04 22:05

The median of five is sometimes used as an exercise in algorithm design and is known to be computable using only 6 comparisons.

What is the best way

10条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-12-04 23:01

    I found this post interesting and as an exercise I created this which ONLY does 6 comparisons and NOTHING else:

    static double MedianOfFive(double a, double b, double c, double d, double e)
    {
        return b < a ? d < c ? b < d ? a < e ? a < d ? e < d ? e : d
                                                     : c < a ? c : a
                                             : e < d ? a < d ? a : d
                                                     : c < e ? c : e
                                     : c < e ? b < c ? a < c ? a : c
                                                     : e < b ? e : b
                                             : b < e ? a < e ? a : e
                                                     : c < b ? c : b
                             : b < c ? a < e ? a < c ? e < c ? e : c
                                                     : d < a ? d : a
                                             : e < c ? a < c ? a : c
                                                     : d < e ? d : e
                                     : d < e ? b < d ? a < d ? a : d
                                                     : e < b ? e : b
                                             : b < e ? a < e ? a : e
                                                     : d < b ? d : b
                     : d < c ? a < d ? b < e ? b < d ? e < d ? e : d
                                                     : c < b ? c : b
                                             : e < d ? b < d ? b : d
                                                     : c < e ? c : e
                                     : c < e ? a < c ? b < c ? b : c
                                                     : e < a ? e : a
                                             : a < e ? b < e ? b : e
                                                     : c < a ? c : a
                             : a < c ? b < e ? b < c ? e < c ? e : c
                                                     : d < b ? d : b
                                             : e < c ? b < c ? b : c
                                                     : d < e ? d : e
                                     : d < e ? a < d ? b < d ? b : d
                                                     : e < a ? e : a
                                             : a < e ? b < e ? b : e
                                                     : d < a ? d : a;
    }
    

提交回复
热议问题