Arrays 知道排序数组中的最小值,如何使用二进制搜索?
假设您得到一个已旋转的排序数组,但您知道该数组中的最小值及其索引 如何在此数组上编写二进制搜索 例如:Arrays 知道排序数组中的最小值,如何使用二进制搜索?,arrays,binary-search,Arrays,Binary Search,假设您得到一个已旋转的排序数组,但您知道该数组中的最小值及其索引 如何在此数组上编写二进制搜索 例如: input array: [3,4,5,6,1,2] search value: 4 min value index = 4 谢谢 这可以通过在查找测试值时对索引应用转换来完成,就像在排序数组上进行二进制搜索一样,不需要旋转: testIndex = (searchIndex + minIndex) % arrayLength; 其中,searchIndex是未旋转数组时将使用的索引,mi
input array: [3,4,5,6,1,2]
search value: 4
min value index = 4
谢谢 这可以通过在查找测试值时对索引应用转换来完成,就像在排序数组上进行二进制搜索一样,不需要旋转:
testIndex = (searchIndex + minIndex) % arrayLength;
其中,searchIndex
是未旋转数组时将使用的索引,minIndex
是旋转数组时的偏移量,testIndex
是用于从旋转数组中查找值的索引
在你的例子中:
input array: [3,4,5,6,1,2]
minIndex: 4
first searchIndex: floor((arrayLength-1)/2) = 2
first testIndex: (4+2)%6 = 0
Hi starchild,在这种情况下,如何处理lo和Hi指针?在正常的二进制搜索中,如果nums[mid]
mid
、low
和high
。只有在实际查找数组中的测试值以进行值比较时,才能转换索引。