Khác biệt giữa bản sửa đổi của “Giải thuật tìm kiếm”

Nội dung được xóa Nội dung được thêm vào
MSBOT (thảo luận | đóng góp)
n robot Thêm: es, fa, he Thay: ja
Dòng 5:
 
=== Tìm kiếm trên danh sách ===
Có lẽ các giải thuật tìm kiếm trên danh sách là loại giải thuật tìm kiếm cơ bản nhất. Mục đích là tìm trong một tập hợp một phần tử chứa một khóa nào đó. Do đây là một bài toán thường gặp trong [[khoa học máy tính]], nên [[độ phức tạp tính toán]] của các thuật toán này đã được nghiên cứu kỹ càng. Thuật toán đơn giản nhất là [[tìm kiếm tuyến tính]]. Thuật toán này kiểm tra từng phần tử trong danh sách theo thứ tự của danh sách đó. Nó có thời gian chạy khá lớn: [[big O notation|O]](n), trong đó ''n'' là số phần tử trong danh sách, nhưng có thể sử dụng thẳng cho một danh sách bất kỳ mà không cần tiền xử lý. [[Tìm kiếm nhị phân]] là một thuật toán cao cấp hơn với thời gian chạy là [[big O notation|O]](log ''n''). Đối với các danh sách lớn, thuật toán này tốt hơn hẳn [[tìm kiếm tuyến tính]], nhưng nó đòi hỏi danh sách phải được sắp xếp từ trước (xem [[thuật toán sắp xếp]]) và đòi hỏi khả năng [[truy nhập ngẫu nhiên]] (''random access''). [[Tìm kiếm nội suy]] (''Interpolation search'') tốt hơn tìm kiếm nhị p hânphân đối với các danh sách rất lớn với phân bố gần đều. [[Giải thuật Grover]] là một [[máy tính lượng tử|thuật toán lượng tử]] cho phép tăng tốc độ gấp 4 lần so với tìm kiếm tuyến tính truyền thống trên các danh sách chưa được sắp xếp.
 
[[Bảng băm]] (''hash table'') cũng được dùng cho tìm kiếm trên danh sách. Nó đòi hỏi thời gian hằng số trong trường hợp trung bình, nhưng lại cần nhiều phụ phí về không gian bộ nhớ và thời gian chạy O(''n'') cho trường hợp xấu nhất. Một phương pháp tìm kiếm khác dựa trên các cấu trúc dữ liệu chuyên biệt sử dụng [[cây tìm kiếm nhị phân cân bằng]] (''self-balancing binary search tree'') và đòi hỏi thời gian chạy O(log ''n''); các giải thuật loại này có thể coi là mở rộng của tư tưởng chính về tìm kiếm nhị phân để cho phép chèn và xóa nhanh. Xem [[mảng liên kết]] (''associative array'') để biết thêm về các cấu trúc dữ liệu tìm kiếm trên danh sách.