这是一个正好有 15 个元素的数组:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
假设我们正在对一个元素进行二分搜索。指示将通过检查数组中的两个或更少数字来找到的任何元素。
我所拥有的:因为我们正在进行二进制搜索,所以仅通过一次比较找到的数字将是第 7 个元素 = 7。对于两次比较,这会导致数组的第二次划分。也就是说,找到的数字可以是 3 或 11。
我是对还是错?
这是一个正好有 15 个元素的数组:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
假设我们正在对一个元素进行二分搜索。指示将通过检查数组中的两个或更少数字来找到的任何元素。
我所拥有的:因为我们正在进行二进制搜索,所以仅通过一次比较找到的数字将是第 7 个元素 = 7。对于两次比较,这会导致数组的第二次划分。也就是说,找到的数字可以是 3 或 11。
我是对还是错?
你几乎是对的,第一个数字不是七而是八。
其他 2 将是 4 和 12。
正确答案是 4, 8, 12
`我发现答案是 8,即第 7 个元素,找到的其他元素是排序数组的第 3.5 个和第 10.5 个元素。因此,接下来研究的两个数字是 4 和 11。
关于我如何得到答案的解释。
给定数组是 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
head=1
tail=15
middle= 0+14/2=7th element **0 is the index value of 1 and 14 is of 15**
middle value turns to be 8 as it is the 7th element.
solving value for first half
head=1
tail=8
middle= 0+7/2=3.5 or 3rd element **0 is the index value of 1 and 7 is of 8**
middle value now turns to be 4 as it is the 3rd element.
solving value for second half
head=8
tail=15
middle= 7+14/2=10.5 or 10th element **7 is the index value of 8 and 14 is
of 15**
middle value now turns to be 11 as it is the 10th element of the array`
块引用