Python:Примеры/Бинарный поиск: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
(Новая страница: «{{Python/Панель перехода}} {{Myagkij-редактор}} =Бинарный поиск= =Код= <syntaxhighlight lang="python" line="GESHI_NORMAL…»)
 
Нет описания правки
 
(не показаны 4 промежуточные версии 2 участников)
Строка 4: Строка 4:


=Бинарный поиск=
=Бинарный поиск=
Бинарный поиск - алгоритм, которому необходимо передать отсортированный список. При бинарном поиске каждый раз выбирается число из середины диапазона и исключается половина оставшихся чисел.
Для списка из ''n'' элементов бинарный поиск выполняется за ''log<sub>2</sub>n'' шагов.
{{Примечание1|
* Для списка из ''100 элементов'', потребуется максимум ''7 шагов'', для поиска нужного элемента.
* Для списка из ''100 000 элементов'', потребуется максимум ''17 шагов'', для поиска нужного элемента.
* Для списка из ''1 000 000 элементов'', потребуется максимум ''20 шагов'', для поиска нужного элемента.
}}


=Код=
=Код=


<syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
def binary_search(list, item):
def binary_search(list, item):
   # в low и high хранятся границы части списка, где выполняется поиск
   # в low и high хранятся границы части списка, где выполняется поиск
Строка 48: Строка 58:
<references />
<references />


{{SEO
{{Навигационная таблица/Python}}
|Заголовок статьи=Python:Примеры - Бинарный поиск / Онлайн справочник - wikihandbk.com
{{Навигационная таблица/Телепорт}}
|Ключевые слова=python, примеры python, примеры на python, Бинарный поиск
|Описание статьи=
|Изображение статьи для Open Graph=
|Адрес страницы для schemaNewsArticle=<nowiki>http://wikihandbk.com/wiki/Python:Примеры/Бинарный поиск</nowiki>
|Изображение статьи для schemaNewsArticle=<nowiki></nowiki>
|Высота изображения статьи для schemaNewsArticle=
|Ширина изображения статьи для schemaNewsArticle=
|Дата публикации для schemaNewsArticle=2020-02-09
|Автор=Мякишев Е.А.
|Издатель=myagkij
|Логотип издателя для schemaNewsArticle=<nowiki>http://wikihandbk.com/ruwiki/images/6/61/Tech_geek_logo_1x.jpg</nowiki>
|Ширина логотипа издателя для schemaNewsArticle=60
|Высота логотипа издателя для schemaNewsArticle=45
}}


[[Категория:Примеры]]
[[Категория:Примеры]]
[[Категория:Примеры Python]]
[[Категория:Примеры Python]]

Текущая версия от 22:51, 27 мая 2023

Проверка/Оформление/Редактирование: Мякишев Е.А.


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

Бинарный поиск - алгоритм, которому необходимо передать отсортированный список. При бинарном поиске каждый раз выбирается число из середины диапазона и исключается половина оставшихся чисел.

Для списка из n элементов бинарный поиск выполняется за log2n шагов.

Примечание
  • Для списка из 100 элементов, потребуется максимум 7 шагов, для поиска нужного элемента.
  • Для списка из 100 000 элементов, потребуется максимум 17 шагов, для поиска нужного элемента.
  • Для списка из 1 000 000 элементов, потребуется максимум 20 шагов, для поиска нужного элемента.

Код

def binary_search(list, item):
  # в low и high хранятся границы части списка, где выполняется поиск
  low = 0
  high = len(list) - 1
  i = 0
  # Пока не останется один элемент
  while low <= high:
    # Проверяем средний элемент
    mid = (low + high) // 2
    guess = list[mid]
    # Значение найдено
    if guess == item:
      return mid
    # Значение велико
    if guess > item:
      high = mid - 1
    # Значение мало
    else:
      low = mid + 1
    i=i+1
    print(i)

  # Значение не найдено
  return None

my_list = [1, 3, 5, 7, 9]
print(binary_search(my_list, 3)) # => 1 (позиция элемента в списке)

# 'None' в Python означает "ничто". Элемент не найден.
print(binary_search(my_list, -1)) # => None

См.также

Внешние ссылки