# 最接近中位数的数 — 补充解法 **Codex(GPT-6)补充解法:排序与双向合并。** 将全部值升序排序,直接得到两倍中位数 $T=b_{\lfloor(n-1)/2\rfloor}+b_{\lfloor n/2\rfloor}$ ,这里使用零基下标。 右指针从 $\lfloor n/2\rfloor$ 开始,左指针从它前一项开始。左侧往左移动,值越来越小,到中位数的距离不减;右侧往右移动,距离也不减。两侧各自是一条按距离排序的序列。 每步比较两侧当前项的 $|2b_i-T|$ ,选择距离较小的项;平局选择右侧,因为右侧数值不小于左侧。某一侧耗尽时从另一侧取。重复 $k$ 次并求和,就是把两条有序序列合并后的前 $k$ 项,故满足全部选择与平局规则。 排序时间 $O(n\log n)$ ,合并时间 $O(k)$ .数组占 $O(n)$ 空间,所用排序实现还需要其调用栈空间。所有算术使用 64 位。 这份[程序](alternative.cpp)提供确定的排序时间界与清楚的双向有序结构,通过完整数据。其平均复杂度高于[首选选择算法](solution.zh.md),不因代码写法不同而宣称速度更快。