Почему следует рассматривать сложность времени выполнения бинарного поиска как log2N

Может ли кто-нибудь объяснить мне, когда дело доходит до бинарного поиска, мы говорим, что сложность времени выполнения составляет O(log n)? Я искал его в Google и получил следующее:

«Количество раз, которое вы можете сократить вдвое пространство поиска, равно log2 n».

Я знаю, что мы делим пополам, пока не найдем ключ поиска в структуре данных, но почему мы должны рассматривать его как log2 n? Я понимаю, что ex — это экспоненциальный рост, поэтому log2 n — это бинарное затухание. Но я не могу интерпретировать бинарный поиск с точки зрения моего понимания определения логарифма.


person poddroid    schedule 01.06.2011    source источник


Ответы (2)


Подумайте об этом так:

Если вы можете позволить себе сократить что-то вдвое m раз (т. е. вы можете позволить себе потратить время, пропорциональное m), то какой большой массив вы можете себе позволить для поиска?

Очевидно, массивы размером 2m, верно?

Таким образом, если вы можете выполнить поиск в массиве размером n = 2m, то время, которое потребуется, пропорционально m, и решение m для n выглядит так:

п = 2м

log2(n) = log2(2m)

log2(n) = m


Другими словами: выполнение двоичного поиска в массиве размером n = 2m< /sup> занимает время, пропорциональное m или, что то же самое, пропорциональное log2(n).

person aioobe    schedule 01.06.2011
comment
Спасибо. Чистое объяснение. Теперь я доволен :-) - person poddroid; 01.06.2011
comment
Я искал это объяснение весь день. Спасибо. - person Ci3; 06.09.2012

Бинарный поиск: -

давайте возьмем пример, чтобы решить проблему.

предположим, что у нас есть «n» яблок, и каждый день половина яблок гниет. то через сколько дней количество яблок будет «1».

первый день n яблок : a a a a .... (всего n)

второй день: a a a a..a(всего n/2)

третий день: a a a .. a (всего n/(2^2));

так далее............... предположим, что через k дней останется 1 яблок
т.е. n/(2^k) должно стать 1 в конце

п/(2^к)=1; 2^к=п; прикладывание бревна к основанию 2 с обеих сторон

k=log n;

так же и в бинарном поиске

сначала у нас осталось n элементов, затем n/2, затем n/4, затем n/8, так что, наконец, у нас остался один элемент, поэтому временная сложность равна log n

person chaitu    schedule 01.06.2011