重复元素数列二分查找的时间复杂度
代码修改影响了时间复杂度
上一章,我们已经写出了新的处理含有重复数字数列的二分查找的repeatingSequenceBinarySearch()函数。
那么,是不是重复元素查找的问题就解决了啊?从功能上说是这样。
但是请注意,这个repeatingSequenceBinarySearch()函数(上一章代码-7)的时间复杂度是多少?
二分查找的时间复杂度不是之前讲过的$O(logn)$吗?那是经典二分查找的时间复杂度。
现在我们的算法可是做了修改呀——加了一段挨个找的代码哦(如下):
while m + delta >= 0 and m + delta < len(arr) and arr[m + delta] == tn:
m += delta
代码-8
加进去的这段代码,自身的时间复杂度是多少呢?
它自身的时间复杂度就是$O(n)$。
新代码的时间复杂度
因为新加进去的代码的功能是沿着数列顺序前行(或后退)直到找到重复数列的头(或者尾)为止,完全不能跳跃——这一点和顺序查找是一样的。因此它的时间复杂度也和顺序