说原始列表是 1 2 3 4 5 6 7 8 9 10
你移动它以便它变成
5 6 7 8 9 10 1 2 3 4
所以说我想检查7是否在数组中。我将如何有效地做到这一点。
答案 0 :(得分:4)
使用三元搜索。它的工作方式类似于二进制搜索(以及对数时间),但是当序列形状像楔形(/)或vee(/)时,可以找到元素。
答案 1 :(得分:2)
使用二进制搜索的变体来查找数组中小于前一个元素的点;这确定了转变点。现在将数组分成两半,并在包含您要搜索的元素的一半中进行二分查找。
答案 2 :(得分:0)
取消列表(无论是物理上还是仅通过查找逻辑),然后是二进制搜索?