Dies ist Qiitas erster Beitrag.
Dieses Mal habe ich eine binäre Suche mit zwei Mustern implementiert, Schleife und rekursiv.
binary_search_loop.py
from typing import List
def binary_search_loop(data: List[int], target: int) -> int:
left, right = 0, len(data)
while left <= right:
mid = (left + right) // 2
if data[mid] == target:
return mid
elif data[mid] < target:
left = mid + 1
else:
right = mid - 1
return None
if __name__ == "__main__":
data: List[int] = [int(x) for x in input("Sortiertes Array(Raum begrenzt)Eingeben: ").split()] #Ich habe die Einschlussnotation verwendet
target = int(input("Ziel eingeben: "))
result = binary_search_loop(data, target)
if result is not None:
print(f"found: {result}War Zweiter")
else:
print("not found")
binary_search_recursion.py
from typing import List
def binary_search_recursion(data: List[int], target: int) -> int:
def recursion(left=0, right=len(data) - 1):
if left > right:
return None
mid = (left + right) // 2
if data[mid] == target:
return mid
elif data[mid] < target:
return recursion(mid + 1, right)
else:
return recursion(left, mid - 1)
return recursion()
if __name__ == "__main__":
data: List[int] = list(map(int, input("Sortiertes Array(Raum begrenzt)Eingeben: ").split())) #Karte verwenden
target = int(input("Ziel eingeben: "))
result = binary_search_recursion(data, target)
if result is not None:
print(f"found: {result}War Zweiter")
else:
print("not found")
Recommended Posts