Description:
給定一個遞增正整數數組和一個要查找的整數target,用二分搜索法查找到給定元素target第一次出現的下標(從0開始),如果target不存在於數組中,返回-1。PS:如若存在多個target,返回target在序列中第一次出現的位置。
Input:
首先輸入一個正整數N,代表接下來將輸入N組測試數據;
然後接下來將分別輸入每組數組nums作爲測試數據;
再輸入每組待查找的元素target。
Output:
分別輸出每組數據查找結果。
# Filename: Midsort.py
n = int(input()) # 輸入序列數
a = [] # 儲存各序列
length = [] # 各序列長度
for i in range(0, n):
a = a + [list(map(int, input().split(',')))]
length.append(len(a[i]))
target = [] # 待查找的元素
for i in range(0, n):
target.append(int(input()))
for i in range(n):
head = 0
end = length[i]+1
mid = (head + end) //2
found = 0
while head != mid:
if a[i][mid-1]>target[i] or a[i][mid-2] == target[i]:
end = mid
mid = (head + end) //2
continue
if a[i][mid-1]<target[i]:
head = mid
mid = (head + end) //2
continue
if a[i][mid-1] == target[i]:
found = 1
print(mid-1)
break
if found == 0:
print(-1)
Bugs you may write:
1.嘗試下1,2,3,4,4,4,4,4這樣的序列,如果搜索4的話,你返回的是3嗎?
2.試試搜索一個序列兩端的數據,你搜得到嗎?