python二分查詢基礎 005 入門

2021-10-19 20:39:34 字數 1495 閱讀 8117

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二分查詢

二分查詢又稱折半查詢,首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表分成前 後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成...