Tìm kiếm nhị phân là một — hiệu quả; ước tính độ phức tạp của nó là O(log2(n)), trong khi tìm kiếm tuần tự thông thường có O(n). Điều này có nghĩa là, ví dụ, đối với một mảng gồm 1024 phần tử, tìm kiếm tuyến tính, trong trường hợp xấu nhất, khi phần tử mong muốn không có trong mảng, sẽ xử lý tất cả 1024 phần tử. Tìm kiếm nhị phân là đủ để xử lý các phần tử \(log_2(1024) = 10\). Kết quả này đạt được là do sau bước đầu tiên của vòng lặp, khu vực tìm kiếm thu hẹp xuống còn 512 phần tử, sau bước thứ hai – lên đến 256, v.v.
O(log2(n))
O(n)
tạm biệt (phải – trái > 1) // Miễn là đường viền bên phải ở bên phải bên trái nc giữa = (trái + phải) /< /span> 2; // Giữa khu vực tìm kiếm nếu (A[middle] >= b) thì phải = giữa; // Di chuyển đường viền bên phải nếu không trái = giữa; // Nếu không thì di chuyển đường viền bên trái cc nếu (A[right] == X) thì đầu ra bên phải; nếu không thì đầu ra -1;
A
N
X
K
KHÔNG
1000 ms 32 Mb Rules for program design and list of errors in automatic problem checking