Với giải Nhiệm vụ 3 trang 120 Tin học lớp 11 Cánh diều chi tiết trong Bài 7: Lập trình giải bài toán tìm kiếm giúp học sinh dễ dàng xem và so sánh lời giải từ đó biết cách làm bài tập Tin học 11. Mời các bạn đón xem:
Giải bài tập Tin học lớp 11 Bài 7: Lập trình giải bài toán tìm kiếm
Nhiệm vụ 3 trang 120 Tin học 11: Viết hàm thực hiện tìm kiếm nhị phân nhận hai tham số đầu vào: dãy số a và giá trị x cần tìm.
Lời giải:
#Trả về chỉ số của x trong arr nếu tồn tại, nếu không có sẽ trả về -1
def binary_search(arr, low, high, x):
#Trường hợp cơ sở
if high >= low:
mid = (high + low) // 2
#Nếu phần tử có tồn tại ở phần giữa của mảng
if arr[mid] == x:
return mid
#Nếu phần tử nhỏ hơn mid, nó sẽ nằm ở phía bên trái của mảng điểm gốc là tử phần tử mid
elif arr[mid] > x:
return binary_search(arr, low, mid - 1, x)
#Nếu không, phần tử sẽ nằm bên phải
else:
return binary_search(arr, mid + 1, high, x)
else:
#Phần tử không tồn tại trong tập hợp
return -1
#Khởi tạo tập hợp
arr = [ 2, 3, 4, 10, 40 ]
x = 10
#Gọi hàm
result = binary_search(arr, 0, len(arr)-1, x)
if result != -1:
print("Phần tử cần tìm có chỉ số là ", str(result))
else:
print("Phần tử cần tìm không có trong mảng.")
Xem thêm lời giải bài tập Tin học lớp 11 Cánh diều hay, chi tiết khác:
Nhiệm vụ 1 trang 120 Tin học 11: Em hãy thực hiện các yêu cầu sau:...
Nhiệm vụ 2 trang 120 Tin học 11: Em hãy thực hiện các yêu cầu sau:...
Câu 1 trang 120 Tin học 11: Em hãy nêu ra một vài ví dụ về bài toàn tìm kiếm trong thực tế...
Câu 2 trang 120 Tin học 11: Theo em, với dãy đã sắp thứ tự và cho một số x cụ thể...
Xem thêm bài giải SGK Tin học lớp 11 Cánh diều hay, chi tiết khác: