1. 程式人生 > >二分查詢(遞迴實現)(可查詢重複元素)

二分查詢(遞迴實現)(可查詢重複元素)

# 二分查詢(遞迴實現)(可查詢重複元素)
def HalfSearch(target,my_list,left,right): # 二分查詢是建立在有序列表之上的
if left >right:
return
mid = (left + right)//2
result = []

if my_list[mid] == target:
result.append(mid)
l = mid # target目標元素向左搜尋
while True:
if my_list[l-1] == target:
result.append(l-1)
l = l-1
else:
break
result.reverse()
r = mid # target目標元素向右搜尋
while True:
if my_list[r+1] == target:
result.append(r+1)
r = r+1
else:
break
return result
if my_list[mid] <= target:
return HalfSearch(target,my_list,mid+1,right)
else:
return HalfSearch(target,my_list,left,mid-1)


if __name__ == '__main__':
my_list = [1,2,3,4,4,5,6,7,9]
print("目標元素在原序列的位置是:",HalfSearch(4,my_list,0,len(my_list)-1))


'''
程式碼親測有效!!!
二分查詢我就不贅敘了,這段(可查詢重複元素的二分查詢)演算法是
在原二分查詢演算法基礎上添加了兩個迴圈實現了可查詢重複元素的二分查詢
'