1
我有這個功能f(n) = x
使用二分查找來找出x可能不存在的。問題是,f(n)
區分偶數和奇數,f(x) < f(x+2)
有保證,但f(x) < f(x+1)
不是。二進制搜索功能,取決於偶數和奇數輸入
例用有限列表:
x = [0,1,1,2,3,5,4,7,6,8,13]
x[5] < x[7] but f[5] > f[6]
目前我做兩個不同的binarySearches,一個爲偶數,一個用於上:
def binarySearch(n, lower, upper, even):
mid = (upper+lower)//2
if even:
if mid % 2 != 0:
mid += 1
else:
if mid % 2 != 1:
mid += 1
...
但確保mid
是偶數或奇數給我停止的問題和我產生StackOverflows。我在哪裏以及如何確保這不會發生?
獎勵:如何解決這個問題,而不使用兩個單獨的binarySearches?
'x [5] x [6]',當然。 –
2014-12-06 13:56:24
'(mid // 2)* 2'怎麼樣? – Wolph 2014-12-06 14:03:07