Quảng cáo
5 câu trả lời 52
Trả lời
Thuật toán tìm kiếm tuần tự thực hiện bằng cách:
So sánh lần lượt từng phần tử trong danh sách với giá trị cần tìm.
Bắt đầu từ phần tử đầu tiên.
Nếu phần tử đang xét bằng giá trị cần tìm thì thông báo đã tìm thấy và dừng lại.
Nếu chưa đúng thì chuyển sang phần tử tiếp theo.
Nếu xét hết danh sách mà không có phần tử nào bằng giá trị cần tìm thì thông báo không tìm thấy.
Ví dụ:
Cần tìm số 8 trong dãy: 3, 5, 8, 10
Ta so sánh lần lượt:
3 ≠ 8
5 ≠ 8
8 = 8
→ Vậy tìm thấy số 8 trong dãy.
- Bắt đầu từ đầu: Thuật toán bắt đầu kiểm tra từ phần tử đầu tiên của danh sách (mảng).
- So sánh: Nó so sánh giá trị của phần tử hiện tại với giá trị cần tìm (X).
- Xử lý kết quả:
- Nếu khớp: Thuật toán dừng lại và thông báo đã tìm thấy (thường trả về vị trí/chỉ số của phần tử đó).
- Nếu không khớp: Thuật toán chuyển sang phần tử kế tiếp trong danh sách và lặp lại bước so sánh.
- Kết thúc: Quá trình này tiếp tục cho đến khi tìm thấy phần tử hoặc đã đi hết toàn bộ danh sách mà không thấy kết quả.
- Độ phức tạp: Trong trường hợp xấu nhất (phần tử ở cuối hoặc không có trong danh sách), thuật toán phải kiểm tra tất cả n phần tử. Do đó, độ phức tạp là .O(n)
- Ưu điểm: Cực kỳ đơn giản, dễ cài đặt và có thể áp dụng trên cả danh sách chưa được sắp xếp.
- Nhược điểm: Hiệu suất kém khi làm việc với các bộ dữ liệu lớn so với các thuật toán như tìm kiếm nhị phân.
Thuật toán tìm kiếm tuần tự (Sequential Search hay Linear Search) là thuật toán tìm kiếm đơn giản nhất. Nó hoạt động giống như cách bạn tìm một từ khóa trong một danh sách chưa được sắp xếp: kiểm tra lần lượt từ đầu đến cuối.
Dưới đây là các bước thực hiện chi tiết:
1. Quy trình thực hiện (Từng bước)
Giả sử bạn có một danh sách (mảng) các phần tử và một giá trị cần tìm (gọi là x):
Bắt đầu: Thiết lập vị trí kiểm tra tại phần tử đầu tiên của danh sách (chỉ số $i = 0$).
So sánh: So sánh giá trị của phần tử hiện tại với giá trị x cần tìm.
Kiểm tra kết quả:
Nếu phần tử hiện tại bằng x: Chúc mừng! Bạn đã tìm thấy. Thuật toán dừng lại và trả về vị trí của phần tử đó.
Nếu phần tử hiện tại khác x: Di chuyển sang phần tử kế tiếp ($i = i + 1$).
Lặp lại: Tiếp tục bước 2 và bước 3 cho đến khi:
Tìm thấy giá trị x.
Hoặc đã kiểm tra hết toàn bộ danh sách mà vẫn không thấy x.
Kết thúc: Nếu đã đi hết danh sách mà không tìm thấy, thuật toán sẽ thông báo là giá trị không tồn tại trong danh sách.
2. Ví dụ minh họa
Tùng hãy tưởng tượng có một dãy số: [5, 8, 1, 3, 9] và cần tìm số 3.
Bước 1: Kiểm tra số đầu tiên (5). $5 \neq 3 \rightarrow$ Tiếp tục.
Bước 2: Kiểm tra số thứ hai (8). $8 \neq 3 \rightarrow$ Tiếp tục.
Bước 3: Kiểm tra số thứ ba (1). $1 \neq 3 \rightarrow$ Tiếp tục.
Bước 4: Kiểm tra số thứ tư (3). $3 = 3 \rightarrow$ Tìm thấy! Thuật toán dừng tại đây.
3. Đặc điểm của thuật toán
Ưu điểm: Cực kỳ đơn giản, dễ cài đặt. Nó có thể áp dụng cho mọi loại danh sách mà không cần sắp xếp trước.
Nhược điểm: Hiệu quả thấp với danh sách lớn. Nếu danh sách có 1 triệu phần tử và số cần tìm nằm ở cuối cùng, bạn sẽ phải thực hiện 1 triệu phép so sánh.
4. Độ phức tạp
Trong tin học, độ phức tạp của thuật toán này được ký hiệu là:
Trường hợp tốt nhất: $O(1)$ (Tìm thấy ngay ở vị trí đầu tiên).
Trường hợp xấu nhất: $O(n)$ (Phải kiểm tra hết $n$ phần tử của danh sách).
Thuật toán tìm kiếm tuần tự (Linear Search) là một trong những phương pháp tìm kiếm cơ bản nhất. Nó hoạt động bằng cách duyệt qua từng phần tử trong một danh sách (mảng) từ đầu đến cuối, so sánh từng phần tử với giá trị cần tìm cho đến khi tìm thấy hoặc đã kiểm tra hết danh sách. Nếu không tìm thấy, thuật toán sẽ thông báo "Không tìm thấy". Mặc dù dễ thực hiện, thuật toán này không hiệu quả với các danh sách lớn, vì trong trường hợp xấu nhất, nó phải kiểm tra tất cả các phần tử.
Các bước hoạt động:
- Bắt đầu từ đầu: Lấy phần tử đầu tiên trong danh sách.
- So sánh: So sánh phần tử hiện tại với giá trị cần tìm.
- Tìm thấy: Nếu hai giá trị bằng nhau, thuật toán sẽ kết thúc và trả về vị trí của phần tử.
- Chưa tìm thấy: Nếu không bằng nhau, chuyển sang phần tử tiếp theo (tăng chỉ số i lên 1).
- Hết danh sách: Nếu đã duyệt hết danh sách mà không tìm thấy, thuật toán sẽ kết thúc và thông báo "Không tìm thấy".
Ví dụ:
- Danh sách: [5, 12, 8, 20, 3]
- Tìm kiếm số 8:
- So sánh 5 với 8 (khác) -> chuyển sang phần tử tiếp theo.
- So sánh 12 với 8 (khác) -> chuyển sang phần tử tiếp theo.
- So sánh 8 với 8 (bằng) -> Tìm thấy tại vị trí thứ 3.
- Tìm kiếm số 10:
- So sánh 5, 12, 8, 20, 3 (tất cả đều khác 10).
- Duyệt hết danh sách -> Không tìm thấy.
- Tìm kiếm số 8:
Ưu điểm:
- Đơn giản, dễ hiểu và dễ cài đặt.
- Không yêu cầu danh sách phải được sắp xếp.
Nhược điểm:
- Chậm và không hiệu quả với các danh sách lớn.
Quảng cáo
Bạn cần hỏi gì?
Câu hỏi hot cùng chủ đề
-
Đã trả lời bởi chuyên gia
61633 -
Đã trả lời bởi chuyên gia
33063 -
Hỏi từ APP VIETJACK
Đã trả lời bởi chuyên gia
25274 -
Đã trả lời bởi chuyên gia
23844
