我试图制作一个具有只有两个级别的恒定间隙大小的“完美”跳过列表。从计算不同大小的跳过列表的访问节点,我可以看出它是由大小决定的,但我无法用n来计算公式。找到只有两个级别的确定性跳过列表的最佳间隔大小
-1
A
回答
1
如果您确实需要恒定的间隙大小,那么您的最佳间隙大小就是列表长度的平方根。例如,如果您的跳过列表长度为16个项目,则最佳间隔大小为4.要到达第15个项目,您需要进行3次长跳跃和3次短跳跃。这是最糟糕的情况。
要得到第k个项目,你关注了k/sqrt(n) + k%sqrt(n)
链接。
更大的间隙大小会让你更快地结束,但为了获得列表中的某个位置,你可能必须遵循更多的单一链接。平均而言,您将遵循更多链接。如果间隙较小,则可以减少单个链接,但链接更长。
如果您的清单是1,000,000项,那么您的差距应该是1,000。
您的渐近复杂度从单个链接列表的O(n)到此固定的第二级别的O(sqrt(n))。只有两个级别,这是最好的选择。
+0
这是一个完美的解释。谢谢! – moo
相关问题
- 1. 在跳转搜索中如何找到跳块大小的最佳值?
- 2. 查找日期列表中最大的时间间隔
- 3. 找到两个表格的最大值,
- 4. 给定一个区间,找到所有的间隔在间隔
- 5. 通过跳过的级别确定图像伽马
- 6. 查找列表上的最大数的两个子句定义
- 7. 查找表的最小和最大值在一定的时间
- 8. 找到两个整数之间的最大增量在列表中的蟒蛇
- 9. 如何找到两个词典列表之间的区别?
- 10. 重复对象的时间序列功能,并找到最佳时间间隔
- 11. 如何找到两个整数类型的最大(大小)?
- 12. 找到[最大值,最小值在列表蟒列表值
- 13. 为JBoss指定最佳的最小和最大堆大小
- 14. 用于插入和查找的最佳散列表只有
- 15. 如何找到链接列表的最大/最小元素
- 16. 找到最大化另一个属性的正确属性
- 17. 找到给定值间隔的每个点的最小值(请参阅正文)
- 18. 找到两个单词列表之间的“相关性”
- 19. 将某个项目列表分组到特定最大大小的组中的最佳Python成语是什么?
- 20. 的MySQL得到最大和最小范围内出间隔
- 21. 带有等级操作的无锁定跳过列表
- 22. CRON表达 - 最小间隔?
- 23. 找到两个最小的值输入
- 24. 如何在固定的时间间隔内找到网络数据的大小?
- 25. 如何找到Mysql中两列之间的最小差异?
- 26. 找到跳跃的最小数量
- 27. VBA - 为两列中的每一列找到最大值和最小值
- 28. 计数只有当它的两个日期之间的间隔超过4S
- 29. 找到两个小于X数的最大功率?
- 30. 确定BLOB列的大小
[Two Egg problem confusion]的可能重复(https://stackoverflow.com/questions/4171966/two-egg-problem-confusion) – Paul