原题是:只用两次比较,得到三个数的中间值。
背景:写快速排序的改进算法,取左、中、右三个值的中间值,作为pivot。但是,写了很久,居然写晕了,也不对。于是上网搜,发现,呵呵,很多人都做不对,或者能做对也非常慢。幸好找到的比较好的答案。
答案:不懂的千万别问我啊,据说这是初中数学题。
- if( (a-b)*(b-c)>0 )
- return b;
- else if( (b-a)*(a-c)>0 )
- return a;
- else return c;
原题是:只用两次比较,得到三个数的中间值。
背景:写快速排序的改进算法,取左、中、右三个值的中间值,作为pivot。但是,写了很久,居然写晕了,也不对。于是上网搜,发现,呵呵,很多人都做不对,或者能做对也非常慢。幸好找到的比较好的答案。
答案:不懂的千万别问我啊,据说这是初中数学题。