💻 TIN HỌC · LỚP 10

Tìm kiếm nhị phân: mỗi bước loại một nửa nhưng dữ liệu phải có thứ tự

Mô phỏng tìm kiếm nhị phân bằng bất biến đoạn tìm kiếm và phân biệt chi phí sắp xếp với chi phí truy vấn.

📖 Bài học⏱ 12 phút👁 1🔖 0
Đóng góp bởi Võ Trí Kỳ Nam · cập nhật 30/08/2026
Đăng nhập để học

💻 Làm sao tìm nhanh trong một triệu mục?

Nếu danh sách đã sắp xếp, so sánh với phần tử giữa cho biết mục tiêu chỉ có thể ở nửa trái hay nửa phải. Mỗi bước làm đoạn ứng viên giảm gần một nửa.

Dãy đã sắp xếp được chia đôi liên tiếp quanh phần tử giữa
Điều bất biến: nếu mục tiêu tồn tại, nó luôn nằm trong đoạn [left, right] đang giữ.

Khung thuật toán

  • Đặt left=0, right=n−1.
  • Khi left≤right, lấy mid=left+⌊(right−left)/2⌋.
  • Nếu a[mid] nhỏ hơn mục tiêu, đặt left=mid+1; nếu lớn hơn, đặt right=mid−1.

Độ phức tạp

Sau k bước còn khoảng n/2ᵏ ứng viên, nên số so sánh tăng theo O(log n). Nhưng nếu dữ liệu chưa sắp xếp và chỉ tìm một lần, chi phí sắp xếp có thể lớn hơn lợi ích.

⚠️ Lỗi biên

Quên dấu bằng trong left≤right hoặc không cộng/trừ 1 khi cập nhật có thể bỏ sót phần tử cuối hay tạo vòng lặp vô hạn.

🔎 Vết chạy

Lập bảng left, mid, right, giá trị so sánh sau từng bước và kiểm tra đoạn thực sự nhỏ đi.

TRAO ĐỔI · HỎI ĐÁP

Cùng nhau hiểu bài sâu hơn

Viết lời giải, công thức, đặt câu hỏi hoặc gửi ảnh phần bạn đang vướng.

Đăng nhập để đặt câu hỏi và tham gia trao đổi.

Chưa có trao đổi nào. Hãy là người đầu tiên đặt câu hỏi nhé.