algorithm - 快速排序中三个(平均值)的中位数?
问题描述
尽管阅读了这篇文章,但我似乎无法理解这是如何工作的——三值策略的中位数
我知道在快速排序中,我可以选择一个任意值作为我的支点并从那里开始。对于中位数三个快速排序,网上有文章说在未排序的数组中选择第一个、最后一个和中间的值,然后选择这3个值的中心值(例如56、12、45 -45将是挑选)。该示例还显示了 9 个值,因此可以轻松选择第一个、最后一个和中间值。
如果未排序的数组只有 8 个值34, 66, 57, 45, 20, 98, 92, 41
怎么办?我的中值是否会分别45
给出第一个、最后一个和中间值34, 45, 41
?
谢谢。
解决方案
鉴于第一个、最后一个和中间值分别为 34、45、41,我的中值是否会是 45?
它将是 41,因为这是这三个数字的中位数。
通常,该方法是根据某种方案选择三个数字,并以中位数作为当前枢轴。
如果选择第一个、中间和最后一个的中位数,则需要考虑一些技术性问题,例如偶数大小的数组(如您的示例)、大小小于 3 的数组等。您在那里做的任何合理选择都可以.
推荐阅读
- azure - 如何在 Azure AD B2C 中添加来自外部 AD 提供程序的输出声明“组”?(自定义政策)
- linux - 无法更新配置单元中的表。
- java - 如何在java中执行mongodb查询
- xml - 使用来自另一个包的 xsd 验证 xml,提供 xsd 的相对路径
- php - 为什么这个使用 AJAX 动态添加的选择输入不起作用?
- javascript - javascript中的正则表达式限制一些特殊字符,如“%,+,>,<,`”
- r - r - 如果满足条件,则重新排序某些行
- php - 热门在 PHP DOM 文档输出中添加新行 \r\n 和选项卡?
- testing - 嵌入式 Kafka:无法在 5000 毫秒内从 Kafka 检索消息
- angular - 角度显示动态嵌套列表