在准备面试的时候,我偶然发现了一个有趣的问题:
您已经获得了一个数组,该数组被排序并旋转。
例如:
- 让
arr = [1,2,3,4,5]
,它已排序- 向右旋转两次,得到
[4,5,1,2,3]
。现在怎样才能最好地在这个排序 + 旋转数组搜索?
可以先解除数组旋转,然后进行二进制搜索。但这并不比在输入数组中进行线性搜索好,因为两者都是最坏情况下的 O (N)。
请提供一些建议。我已经在谷歌上搜索了很多关于这个的特殊算法,但是没有找到任何建议。
我懂 C 和 C + + 。