Luyện tậpCâu hỏi 1. Chỉnh sửa lại chương trình của Nhiệm vụ 3 để cho phép chương trình có thể...

Câu hỏi:

Luyện tập 

Câu hỏi 1. Chỉnh sửa lại chương trình của Nhiệm vụ 3 để cho phép chương trình có thể tìm kiếm điểm số trên danh sách điểm só được sắp xếp theo thứ tự giảm dần.

Câu trả lời:
Người trả lời: GV. Đỗ Đăng Việt
Phương pháp giải:

Để chương trình có thể tìm kiếm điểm số trên danh sách điểm số được sắp xếp theo thứ tự giảm dần, ta cần chỉnh sửa phần chương trình là mảng A lúc tại hàm binary search.

Cách 1: Sửa mảng A để sắp xếp theo thứ tự giảm dần trước khi áp dụng thuật toán tìm kiếm nhị phân.

Đoạn mã sửa lại:

```python
ds_diem.sort(reverse=True)
vitri=BinarySearch(ds_diem, diem)
```

Cách 2: Sửa thuật toán tìm kiếm nhị phân để tìm kiếm trên mảng đã sắp xếp theo thứ tự giảm dần.

```python
def BinarySearch(A, K):
left = 0
right = len(A) - 1
while left <= right:
mid = (left + right) // 2
if A[mid] == K:
return mid
elif A[mid] < K:
right = mid - 1
else:
left = mid + 1
return -1
```

Câu trả lời:

Để chương trình có thể tìm kiếm điểm số trên danh sách điểm số được sắp xếp theo thứ tự giảm dần, ta cần chỉnh sửa phần chương trình là mảng A lúc tại hàm binary search hoặc sắp xếp mảng trước khi thực hiện tìm kiếm. Dưới đây là một số cách có thể sửa chương trình:

1. Sắp xếp danh sách điểm số theo thứ tự giảm dần trước khi áp dụng thuật toán tìm kiếm nhị phân.

```python
ds_diem.sort(reverse=True)
vitri = BinarySearch(ds_diem, diem)
```

2. Sửa thuật toán tìm kiếm nhị phân để tìm kiếm trên mảng đã sắp xếp theo thứ tự giảm dần.

```python
def BinarySearch(A, K):
left = 0
right = len(A) - 1
while left <= right:
mid = (left + right) // 2
if A[mid] == K:
return mid
elif A[mid] < K:
right = mid - 1
else:
left = mid + 1
return -1
```

Như vậy, sau khi thực hiện các chỉnh sửa trên chương trình, ta có thể tìm kiếm điểm số trên danh sách điểm số được sắp xếp theo thứ tự giảm dần.
Bình luận (0)
Nhấn vào đây để đánh giá
Thông tin người gửi
0.08777 sec| 2253.234 kb