Quảng cáo
2 câu trả lời 547
Thuật toán tìm kiếm nhị phân hoạt động trên một tập hợp đã được sắp xếp và giảm bớt nửa các phần tử trong mỗi bước. Dưới đây là các bước để tìm vị trí cuối cùng của số \( x \) trong dãy số đã cho [1, 3, 5, 7, 9]:
1. **Bước 1**: Đặt hai chỉ số là `left = 0` và `right = len(array) - 1`.
2. **Bước 2**: Lặp lại các bước sau cho đến khi `left <= right`:
- Tính chỉ số trung bình: `mid = (left + right) // 2`.
- So sánh số ở vị trí `mid` với số cần tìm `x`:
- Nếu `array[mid] > x`, di chuyển `right` về `mid - 1`.
- Nếu `array[mid] <= x`, di chuyển `left` về `mid + 1`.
3. **Bước 3**: Khi vòng lặp kết thúc, kiểm tra xem `array[mid]` có bằng `x` không:
- Nếu `array[mid] == x`, lưu lại vị trí `mid` và di chuyển `left` tới `mid + 1` để tìm kiếm vị trí cuối cùng.
- Nếu `array[mid] != x`, di chuyển `right` tới `mid - 1`.
4. **Bước 4**: Trả về vị trí cuối cùng của `x` trong dãy số. Nếu không tìm thấy `x`, trả về `-1`.
Áp dụng thuật toán này vào dãy số [1, 3, 5, 7, 9] để tìm vị trí cuối cùng của số `x`:
Bước 1: `left = 0`, `right = 4`
Bước 2:
- Bước 2.1: `mid = (0 + 4) // 2 = 2`, `array[mid] = 5`
- Bước 2.2: `array[mid] <= x`, `left = mid + 1 = 3`
Bước 2:
- Bước 2.1: `mid = (3 + 4) // 2 = 3`, `array[mid] = 7`
- Bước 2.2: `array[mid] > x`, `right = mid - 1 = 2`
Bước 2:
- `left = right`, kết thúc vòng lặp.
Bước 3:
- `array[mid] != x`, không tìm thấy số `x`.
Bước 4:
- Trả về `-1`.
Kết quả là `-1`, không tìm thấy số `x` trong dãy số đã cho.
Thuật toán tìm kiếm nhị phân được sử dụng để tìm kiếm một phần tử trong một dãy số đã được sắp xếp. Các bước để tìm kiếm vị trí cuối cùng của số vậy (giả sử số vậy là 8) trong dãy số đã cho 1, 3, 5, 7, 9 như sau:
1. Khởi tạo hai biến `left` và `right` lần lượt là vị trí đầu tiên và cuối cùng trong dãy số.
2. Lặp lại quá trình sau cho đến khi `left` không còn nhỏ hơn hoặc bằng `right`:
- Tính toán vị trí giữa của dãy số: `mid = (left + right) / 2`.
- Nếu phần tử tại vị trí `mid` lớn hơn hoặc bằng số vậy, cập nhật `right = mid - 1`.
- Ngược lại, cập nhật `left = mid + 1`.
3. Khi vòng lặp kết thúc, vị trí cuối cùng của số vậy trong dãy số sẽ là `right`.
Áp dụng thuật toán trên vào dãy số 1, 3, 5, 7, 9 để tìm vị trí cuối cùng của số 8:
- Ban đầu, `left = 0`, `right = 4`.
- Lần lượt tính `mid`:
- Lần 1: `mid = (0 + 4) / 2 = 2`. Vị trí 2 tương ứng với số 5 < 8, cập nhật `left = 3`.
- Lần 2: `mid = (3 + 4) / 2 = 3`. Vị trí 3 tương ứng với số 7 < 8, cập nhật `left = 4`.
- Lần 3: `mid = (4 + 4) / 2 = 4`. Vị trí 4 tương ứng với số 9 > 8, cập nhật `right = 3`.
- Kết thúc vòng lặp, vị trí cuối cùng của số 8 trong dãy số là 3.
Quảng cáo
Bạn muốn hỏi bài tập?
Câu hỏi hot cùng chủ đề
-
32852
-
Hỏi từ APP VIETJACK25096
