khoahoc.vietjack.com
Xin chào! Vào học

Câu hỏi:

13/07/2024 873 Lưu

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.

Quảng cáo

Trả lời:

verified Giải bởi Vietjack

#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.")

Đang tải chế độ Học...

Dành cho bạn Hot

Lớp 11 Vật lý
205 người thi tuần này

Trắc nghiệm Mô tả sóng lớp 11 (có đáp án)

10 câu 6.3 K lượt thi Thi ngay →
Lớp 11 Hóa học
141 người thi tuần này

Trắc nghiệm Nitrogen lớp 11 (có đáp án - phần 1)

15 câu 4.2 K lượt thi Thi ngay →
Lớp 11 Tiếng Anh
143 người thi tuần này

Đề cương ôn tập giữa kì 1 Tiếng Anh 11 Global Success có đáp án

50 câu 1.2 K lượt thi Thi ngay →
Lớp 11 Sinh học
161 người thi tuần này

15 câu Trắc nghiệm Sinh học 11 Kết nối tri thức Bài 8 có đáp án

15 câu 3.2 K lượt thi Thi ngay →
Lớp 11 Lịch sử
1,314 người thi tuần này

25 câu Trắc nghiệm Lịch Sử 11 Kết nối tri thức Bài 1 có đáp án

25 câu 20.4 K lượt thi Thi ngay →
Lớp 11 Tin học
745 người thi tuần này

15 câu Trắc nghiệm Tin học 11 Kết nối tri thức Bài 1 có đáp án

15 câu 9.8 K lượt thi Thi ngay →
Lớp 11 Giáo dục Kinh tế và Pháp luật
158 người thi tuần này

16 câu Trắc nghiệm Kinh tế pháp luật 11 Kết nối tri thức Bài 2 có đáp án

16 câu 3.9 K lượt thi Thi ngay →

CÂU HỎI HOT CÙNG CHỦ ĐỀ

Lời giải

a. Viết chương trình phython thực hiện tìm kiếm tuần tự

def search(arr, n, x):

    for i in range (0, n):

        if (arr[i] == x):

            return i;

    return -1;

# Driver Code

arr = [ 2, 3, 4, 10, 40 ];

x = 10;

n = len(arr);

result = search(arr, n, x)

if(result == -1):

    print("Element is not present in array")

else:

    print("Element is present at index", result);

b. Viết phiên bản tìm kiếm tuần tự thứ hai, dùng vòng lặp for thay cho vòng lặp while (hoặc ngược lại).

def search(arr, n, x):

    for i in range (0, n):

        if (arr[i] == x):

            return i;

    return -1;

# Driver Code

arr = [ 2, 3, 4, 10, 40 ];

x = 10;

n = len(arr);

result = search(arr, n, x)

if(result == -1):

    print("Element is not present in array")

else:

    print("Element is present at index", result);

c. Viết phiên bản tìm kiếm tuần tự có thêm hai tham số đầu vào lo và hi tương tự như của hàm index. So sánh kết quả với phương thức index của phython.

def search(arr, n, x):

    for i in range (0, n):

        if (arr[i] == x):

            return i;

    return -1;

# Driver Code

arr = [ 2, 3, 4, 10, 40 ];

x = 10;

n = len(arr);

result = search(arr, n, x)

if(result == -1):

    print("Element is not present in array")

else:

    print("Element is present at index", result);

Lời giải

- Tìm kiếm sản phẩm trong cơ sở dữ liệu của một trang thương mại điện tử.

- Tìm kiếm thông tin liên hệ của một người trong danh sách khách hàng của một doanh nghiệp.

- Tìm kiếm một file hoặc thư mục trong hệ thống tệp của máy tính.

- Tìm kiếm các bản ghi trong cơ sở dữ liệu y tế để tìm kiếm bệnh nhân cần điều trị.

- Tìm kiếm các bản ghi trong cơ sở dữ liệu của một trang tuyển dụng để tìm kiếm ứng viên phù hợp.

Lời giải

Bạn cần đăng ký gói VIP ( giá chỉ từ 250K ) để làm bài, xem đáp án và lời giải chi tiết không giới hạn.

Nâng cấp VIP

Lời giải

Bạn cần đăng ký gói VIP ( giá chỉ từ 250K ) để làm bài, xem đáp án và lời giải chi tiết không giới hạn.

Nâng cấp VIP

Lời giải

Bạn cần đăng ký gói VIP ( giá chỉ từ 250K ) để làm bài, xem đáp án và lời giải chi tiết không giới hạn.

Nâng cấp VIP

Lời giải

Bạn cần đăng ký gói VIP ( giá chỉ từ 250K ) để làm bài, xem đáp án và lời giải chi tiết không giới hạn.

Nâng cấp VIP