Грокаем а Иллюстрированное пособие для программистов и любопытствующих


Логарифм — операция, обратная возведению в степень



Download 3,16 Mb.
bet10/79
Sana19.02.2022
Hajmi3,16 Mb.
#457977
1   ...   6   7   8   9   10   11   12   13   ...   79
Bog'liq
Грокаем алгоритмы ( PDFDrive )

Логарифмоперация, обратная возведению в степень
Когда я в этой книге упоминаю «О-большое» (об этом чуть позднее), log всегда означает log2. Когда вы ищете элемент с применением про­стого поиска, в худшем случае вам придется проверить каждый эле­мент. Итак, для списка из 8 чисел понадобится не больше 8 проверок. Для бинарного поиска в худшем случае потребуется не более logn проверок. Для списка из 8 элементов log 8 == 3, потому что 23 == 8. Итак, для списка из 8 чисел вам придется проверить не более 3 чисел. Для списка из 1024 элементов log 1024 - 10, потому что 210 == 1024. Следовательно, для списка из 1024 чисел придется проверить не бо­лее 10 чисел.
ПРИМЕЧАНИЕ
Бинарный поиск работает только в том случае, если список отсортирован. Например, имена в телефонной книге хранятся в алфавитном порядке, и вы можете воспользоваться бинарным поиском. А что произойдет, если имена не будут отсортированы?
Посмотрим, как написать реализацию бинарного поиска на Python. В следу­ющем примере кода используется массив. Если вы не знаете, как работают массивы, не беспокойтесь: эта тема рассматривается в следующей главе. Пока достаточно знать, что серию элементов можно сохранить в непрерыв­ной последовательности ячеек, которая называется массивом. Нумерация ячеек начинается с 0: первая ячейка находится в позиции с номером 0, вторая — в позиции с номером 1 и т. д.
Функция binary_search получает отсортированный массив и значение. Если значение присутствует в массиве, то функция возвращает его позицию. При этом мы должны следить за тем, в какой части массива проводится поиск. Вначале это весь массив:
low = 0
h
igh = len(list) - 1
ЧИСЛА, ПО КОТОРЫМ ПРОВОДИТСЯ ПОИСК
Каждый раз алгоритм проверяет средний элемент:
Е
mid = (low + high) / 2 <
guess = list[mid]
сли значение
(low+high) нечетно, то Python автомати­чески округляет значение mid в меньшую сторону

Если названное число было слишком мало, то переменная low обновляется соответственно:
if guess < item:
low = mid + 1
НОВОЕ
ЗНА­
Ч
LOV/
ЕНИЕ
H
IGH

Download 3,16 Mb.

Do'stlaringiz bilan baham:
1   ...   6   7   8   9   10   11   12   13   ...   79




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish