btvn.vn
Tìm kiếm Đăng nhập

Tìm kiếm tuần tự trong dãy

Lưu trên thiết bị này
Kĩ thuật lập trình — CS · Chọn bài khác

Đi từ trái sang phải

Với `a = [14, 8, 21, 8, 5]` và `k = 8`, tìm kiếm tuần tự so sánh lần lượt `a[0]=14` rồi `a[1]=8`. Lần thứ hai khớp, nên trả chỉ số 1 và dừng. Dãy **không cần sắp xếp**. Nếu tìm 5, phải so sánh cả năm phần tử; nếu tìm 99, cũng phải xem cả năm rồi báo không thấy. Đây là số lần so sánh của ví dụ, không là thời gian thực đo trên máy.

Hàm tìm một vị trí

```python def tim_tuan_tu(a, k): for i in range(len(a)): if a[i] == k: return i return -1 print(tim_tuan_tu([14, 8, 21, 8, 5], 8)) print(tim_tuan_tu([14, 8, 21, 8, 5], 99)) ``` Hai dòng in là `1` và `-1`. `return -1` nằm **sau** vòng lặp: chỉ báo không thấy khi đã xét hết mà không có phần tử khớp. Nếu đặt nó trong vòng lặp ngay sau lần so sánh đầu sai, hàm sẽ bỏ qua các phần tử còn lại. Với dãy rỗng, vòng lặp không chạy và kết quả cũng là `-1`. Dãy có nhiều số 8 chỉ trả vị trí đầu vì hàm dừng ở lần khớp đầu.

Bài luyện

Hàm tìm tuần tự trong bài trả gì khi tìm 8 ở dãy `[14, 8, 21, 8, 5]`?
Chọn một đáp án

Bài luyện

Với dãy `[14, 8, 21, 8, 5]`, tìm số 99 bằng tìm kiếm tuần tự cần so sánh bao nhiêu phần tử?
Chọn một đáp án

Bài luyện

Trong hàm trên, vì sao `return -1` đặt sau vòng `for`?
Chọn một đáp án

Đang học