【发布时间】:2012-08-08 18:24:50
【问题描述】:
我一直在从事一项看似简单却让我发疯的任务。因此,如果您喜欢编程挑战……请继续阅读。
我希望能够采用数字范围,例如[1:20] 并使用类似于二进制搜索算法的机制打印值。因此,首先打印最低值(在本例中为 1),然后是中间值(例如在本例中为 10),然后将范围分成四等份并打印 1/4 和 3/4 处的值(在本例中为 5和 15) 然后分成八等份,直到打印完范围内的所有值。
这个应用程序(这里实际上没有必要理解)是用于内存页面访问机制,当首先在中间范围访问页面时,它的行为会更有效。
对于这个问题,取任何数字范围并以上述方式打印值就足够了。
对此有什么想法吗?一个伪代码解决方案就可以了。我会对此进行尝试,但到目前为止我所尝试的一切都没有减少它。谢谢。
更新:根据要求,示例 [1:20] 的所需输出将是这样的:1、10、5、15、3、7、12、17、2、4、6、8、11 , 13, 16, 18, 9, 19, 20
根据所使用的算法,此输出可以以许多类似的方式呈现。但是,这个想法是首先显示半值,然后是四分之一,然后是八分之一,然后是 16 分等,而忽略先前呈现的值。
【问题讨论】:
-
您能否为示例案例提供所需的完整输出?
-
但您只能使用您分配的页面,对吗?
-
对类似问题的回答可能会有所帮助:stackoverflow.com/a/11761192/1009831
-
请忽略该问题的内存页面分配方面,因为它不是一个熟悉的问题。
-
在我看来,从
1开始序列是一个错误,因为所有其他输出都是中点。
标签: python c algorithm binary-search