algorithm - 使用一次对 n 个元素进行排序的函数对 2n 个元素的数组进行排序
问题描述
假设我们有一个子程序,它将对任何大小为 m 的列表进行适当的排序。通过重复调用子程序,你能多快对大小为 2m 的列表进行排序?需要调用多少次子程序?
解决方案
您可能可以通过 5 次调用来完成此操作。我试图证明这一点,我没有做所有的细节,但这似乎是可能的。请注意,此解决方案需要重新排列(显然,不进行比较)元素。我不确定这是否被允许。
8 7 6 5 4 3 2 1
sort each half (2 calls)
5 6 7 8 1 2 3 4
sort the smaller halves (5 6 1 2) and larger halves (7 8 3 4) of each half (2 calls)
1 2 5 6 3 4 7 8
sort the middle half (1 call)
1 2 3 4 5 6 7 8
推荐阅读
- spring-kafka - 如何将一堆自定义异常设置为不可重试异常?
- python - 回复挑战 2019 中的问题“密码”
- amazon-web-services - 接口 Vpc 端点 - 日志
- java - 如何更改 java Path 对象的值?
- html - 如何在我的链接标签下获得我的链接?
- terraform - 如何使用 CODE_DEPLOY 部署控制器更新现有 ECS 服务的 desired_count?
- python - “:”在python的格式方法中做了什么?
- xml - 使用属性中的对齐信息通过 xslt 对齐 xml 元素
- excel - 使用 VBA 从表中生成列表框项
- r - 如何编写一个系数在 R 中趋于 0 的函数?