GIẢI THUẬT TÌM KIẾM TUYẾN TÍNH & NHỊ PHÂN Giải thuật (algorithms): dãy câu lệnh (statements) chặt chẽ rõ ràng xác định trình tự thao tác số đối tượng cho sau số hữu hạn bước thực ta đạt kết mong muốn Thuật toán: dãy hữu hạn bước, bước mô tả xác phép tốn hành động cần thực hiện, để giải vấn đề Niklous Wirth, cha đẻ ngơn ngữ lập trình Pascal kỹ thuật lập trình cấu trúc đúc kết ý nghĩa liệu mối quan hệ hữu với giải thuật mệnh đề tiếng: Chương trình = Thuật tốn + Cấu trúc liệu KHOA CƠNG NGHỆ THƠNG TIN Bài tốn mơ tả sau: • Tập liệu lưu trữ dãy a1, a2, ,an Giả sử chọn cấu trúc liệu mảng để lưu trữ dãy số nhớ chính, có khai báo: int a[n]; • Khóa cần tìm x: int x; Tìm kiếm KHOA CƠNG NGHỆ THƠNG TIN Tìm kiếm tuyến tính Tìm kiếm nhị phân Tập liệu Tập liệu xếp • Ý tưởng: duyệt từ phần tử đầu tiên, so sánh khóa tìm kiếm với khoá tương ứng phần tử danh sách Cho đến gặp phần tử cần tìm duyệt hết danh sách • Các bước tiến hành sau: i=0 i n: Hết mảng, khơng tìm thấy Dừng Ngược lại, quay lui Bước KHOA CƠNG NGHỆ THƠNG TIN Thuật tốn tìm kiếm tuyến tính //Trả về: vị trí xuất x mảng a Trả về: -1 x mảng a // int Search(int a[], int n, int key) { int i =0; while (i