Đây là mục nhập wikipedia
Nếu bạn nhìn vào phương pháp lặp đơn giản. Bạn chỉ cần loại bỏ một nửa các yếu tố cần tìm kiếm cho đến khi bạn tìm thấy yếu tố bạn cần.
Dưới đây là lời giải thích về cách chúng tôi đưa ra công thức.
Giả sử ban đầu bạn có N số phần tử và sau đó những gì bạn làm là ⌊N / 2⌋ như một lần thử đầu tiên. Trong đó N là tổng của giới hạn dưới và giới hạn trên. Giá trị thời gian đầu tiên của N sẽ bằng (L + H), trong đó L là chỉ mục đầu tiên (0) và H là chỉ mục cuối cùng của danh sách bạn đang tìm kiếm. Nếu bạn may mắn, yếu tố bạn cố gắng tìm sẽ nằm ở giữa [ví dụ. Bạn đang tìm kiếm 18 trong danh sách {16, 17, 18, 19, 20} thì bạn tính (0 + 4) / 2⌋ = 2 trong đó 0 bị ràng buộc thấp hơn (chỉ số L của phần tử đầu tiên của mảng) và 4 là giới hạn cao hơn (chỉ số H - của phần tử cuối cùng của mảng). Trong trường hợp trên L = 0 và H = 4. Bây giờ 2 là chỉ mục của phần tử 18 mà bạn đang tìm kiếm tìm thấy. Chơi lô tô! Bạn đã tìm thấy nó.
Nếu trường hợp là một mảng khác {15,16,17,18,19} nhưng bạn vẫn đang tìm kiếm 18 thì bạn sẽ không gặp may và bạn sẽ thực hiện N / 2 đầu tiên (đó là ⌊ (0 + 4) / 2⌋ = 2 và sau đó nhận ra phần tử 17 ở chỉ số 2 không phải là số bạn đang tìm kiếm. Bây giờ bạn biết rằng bạn không phải tìm kiếm ít nhất một nửa mảng trong lần thử tiếp theo để tìm kiếm cách lặp. Vì vậy, về cơ bản, bạn không tìm kiếm một nửa danh sách các yếu tố mà bạn đã tìm kiếm trước đó, mỗi khi bạn cố gắng tìm yếu tố mà bạn không thể tìm thấy trong lần thử trước.
Vì vậy, trường hợp xấu nhất sẽ là
[N] / 2 + [(N / 2)] / 2 + [((N / 2) / 2)] / 2 .....
tức là:
N / 2 1 + N / 2 2 + N / 2 3 + ..... + N / 2 x ' ..
cho đến khi bạn đã hoàn thành việc tìm kiếm, trong đó phần tử bạn đang cố gắng tìm ở cuối danh sách.
Điều đó cho thấy trường hợp xấu nhất là khi bạn đạt N / 2 x trong đó x sao cho 2 x = N
Trong các trường hợp khác N / 2 x trong đó x sao cho 2 x <N Giá trị tối thiểu của x có thể là 1, đây là trường hợp tốt nhất.
Bây giờ vì trường hợp xấu nhất về mặt toán học là khi giá trị của
2 x = N
=> log 2 (2 x ) = log 2 (N)
=> x * log 2 (2) = log 2 (N)
=> x * 1 = log 2 (N)
=> Chính thức hơn ⌊log 2 (N) + 1⌋