Câu hỏi: Em hãy cho biết thuật toán tìm kiếm tuần tự phải thực hiện bao nhiêu bước để tìm khách hàng tên Trúc như ở Hình 15.1? Em hãy so sánh số bước thực hiện của thuật toán tìm kiếm tuần tự với số bước thực hiện thuật toán tìm kiếm nhị phân.
Lời giải:
- Quan sát Hình 15.1
- Thuật toán tìm kiếm tuần tự: tìm kiếm lần lượt từ đầu danh sách cho đến khi tìm được
- Thuật toán tìm kiếm nhị phân: so sánh giá trị ở giữa danh sách đã được sắp xếp với giá trị cần tìm.
Thuật toán tìm kiếm tuần tự phải thực hiện 3 bước để tìm khách hàng tên Trúc như ở Hình 15.1.
- Số bước thực hiện của thuật toán tìm kiếm tuần tự nhiều hơn so với số bước thực hiện thuật toán tìm kiếm nhị phân vì thuật toán tìm kiếm tuần tự sẽ tìm kiếm lần lượt từ đầu danh sách cho đến khi tìm được tên của bạn Trúc nên sẽ mất 8 lần lặp, còn thuật toán tìm kiếm nhị phân so sánh giá trị ở giữa danh sách nên sẽ nhanh chóng hơn.
* Phát biểu thuật toán tìm kiếm nhị phân(Binary search)
Cho một mảng đã sắp xếp arr[] có n phần tử, viết một hàm tìm kiếm trả về chỉ số của phần tử có giá trị x trong arr[].
Giải thuật đơn giản nhất cho bài toán này là sử dụng linear search(tìm kiếm tuyến tính). Tức là bạn sẽ phải đi qua từng phần tử của mảng để đối chiếu với x cần tìm. Thuật toán này trong trường hợp xấu nhất cho độ phức tạp là O(n). Mình cũng sẽ minh họa code của thuật toán này dưới đây.
Đây là code C/C++ sử dụng linear search.