如何计算二进制搜索在排序数组中出现两次的键的最坏情况时间?
How to calculate the worst case time for binary search for a key that appears twice in the sorted array?
使用二进制搜索查找在排序数组中出现两次的键的最坏情况时间复杂度是多少?我知道对排序数组进行二进制搜索的最坏情况时间复杂度是 O(log n)。因此,在密钥出现不止一次的情况下,时间复杂度应该小于 O(log n)。但是,我不确定如何计算这个。
在最坏的情况下,二分搜索需要执行 ⌊log_2(n) + 1⌋
次迭代才能找到元素或得出元素不在数组中的结论。
通过复制,您可能只需要少一步。
例如,假设您的重复元素出现在数组的第一个和第二个索引中(如果它们在最后一个和最后一个之前,则相同)。
在这种情况下,您将进行 ⌊log_2(n)⌋
比较,因此,仍然是 O(log(n))
作为最坏情况的时间复杂度。
使用二进制搜索查找在排序数组中出现两次的键的最坏情况时间复杂度是多少?我知道对排序数组进行二进制搜索的最坏情况时间复杂度是 O(log n)。因此,在密钥出现不止一次的情况下,时间复杂度应该小于 O(log n)。但是,我不确定如何计算这个。
在最坏的情况下,二分搜索需要执行 ⌊log_2(n) + 1⌋
次迭代才能找到元素或得出元素不在数组中的结论。
通过复制,您可能只需要少一步。
例如,假设您的重复元素出现在数组的第一个和第二个索引中(如果它们在最后一个和最后一个之前,则相同)。
在这种情况下,您将进行 ⌊log_2(n)⌋
比较,因此,仍然是 O(log(n))
作为最坏情况的时间复杂度。