1.問題描述
給定乙個排序的整數組(公升序)和乙個要查詢的目標整數target,查詢到target第1次出現的下標(從0開始),如果target不存在於陣列中,返回-1
2.問題示例
輸入陣列[1,4,5,5,7,7,8,9,10]和目標整數1.輸出其所在的位置為0,即第1次出現在第0個位置。
輸入陣列[1,2,3,3,4,5,10]和目標整數3,輸出2,即第1次出現在第2個位置。
輸入陣列[1,2,3,3,4,5,10]和目標整數6,輸出-1,即沒有出現過6,返回-1
我的答案
class solution():
def binarysearch(self,nums,target):
if target in nums:
output=nums.index(target)
else:
output="-1"
return output
if __name__ == "__main__":
nums=[1,4,4,5,7,7,8,9,9,10]
target=1
solution=solution()
output=solution.binarysearch(nums,target)
print("輸入:",target)
print("位置:",output)
輸入: 1
位置: 0
參***
class solution:
#引數nums:整數陣列
#引數target:要查詢的目標數字
#返回值:目標數字的第1個位置,從0開始
def binarysearch(self,nums,target):
return self.search(nums,0,len(nums)-1,target)
def search(self,nums,start,end,target):
if start>end:
return -1
mid=(start+end)//2
if nums[mid] == target:
return mid
if nums[mid]
return self.search(nums,mid,end,target)
#主函式
if __name__ == "__main__":
my_solution=solution()
nums=[1,2,3,4,5,6]
target=3
targetindex=my_solution.binarysearch(nums,target)
print("輸入:nums=",nums," ","target=",target)
print("輸出:",targetindex)
輸入:nums= [1, 2, 3, 4, 5, 6] target= 3
輸出: 2
答案為什麼那麼複雜呢,不怎麼懂,留個坑,等能力高了再看看
python程式設計300例之 005二分查詢
1 binarysearch2 給定乙個排序的整數陣列 公升序 和乙個要查詢的目標整數target3 查詢到target第一次出現的的下標 從0開始 如果陣列中沒有就返回 1 4 5輸入陣列 1,4,4,5,7,7,8,9,9,10 和目標整數1,輸出其所在的位置為0,即第一次出現第0個位置.輸入陣...
DS 005 順序表 二分查詢
題目 線性表 a1,a2,a3,an 中元素遞增有序且按順序儲存在計算機中。要求設計乙個演算法完成用最少時間在表中查詢值為x的元素,若找到將其與後繼元素位置相交換,若找不到將其插入表中並使表中元素仍遞增有序。演算法思想 有序順序表,可以用二分查詢 折半查詢 int binarysearch elem...
Python二分查詢
二分查詢又稱折半查詢,首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表分成前 後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成...