Java 查找中间值而不进行排序

Java 查找中间值而不进行排序,java,algorithm,data-structures,Java,Algorithm,Data Structures,可能重复: 是否有任何算法可以在不执行排序操作的情况下找到给定列表的中间值 例如,如果列表保持为堆栈并包含(1,2,5,3,4,6),则中间值应为4 因此,我的问题是如何在不对列表执行排序操作的情况下获取该值 这可能吗?是的,有一些众所周知的算法可以找到列表中第k个最大的元素。看 这里,k被预先计算为length/2当然,如果列表中有偶数个元素,则调整为最接近的整数。为什么不对列表进行排序?好奇你怎么计算中间值?据我所知,在你的例子中可能是3或4。为什么4是中间值?这是三加四舍五入的平均值吗?

可能重复:

是否有任何算法可以在不执行排序操作的情况下找到给定列表的中间值

例如,如果列表保持为堆栈并包含(1,2,5,3,4,6),则中间值应为4 因此,我的问题是如何在不对列表执行排序操作的情况下获取该值


这可能吗?

是的,有一些众所周知的算法可以找到列表中第k个最大的元素。看


这里,
k
被预先计算为
length/2
当然,如果列表中有偶数个元素,则调整为最接近的整数。

为什么不对列表进行排序?好奇你怎么计算中间值?据我所知,在你的例子中可能是3或4。为什么4是中间值?这是三加四舍五入的平均值吗?也许OP只是想要中位数。大多数排序都是nlogn,但也有近似线性的算法。并不是说它们一定更快,但它们很有趣。我做了排序,得到了123456,然后mid=list[size()/2+1],这等于4