0 / 0 / 0
Регистрация: 20.11.2022
Сообщений: 8
|
|
1 | |
Бинарный поиск04.12.2022, 10:39. Показов 896. Ответов 0
Обратите внимание, что перед отправкой решения данной задачи нужно в качестве языка выбрать Make.
В процессе археологических раскопок было найдено много документов. Откапывая все новые и новые рукописи, археологи датировали их и складывали в одну стопку. У одного из археологов родилась новая гипотеза о причинах поражения Французов в битве 1415 года при Азенкуре. Однако, для проверки гипотезы необходимо найти документ 1415 года. Вам дан список дат, которые приписаны к каждому документу. Даты упорядочены строго по возрастанию. При помощи бинарного поиска найдите индекс соответствующего документа. Гарантируется, что документ 1415 года есть в списке. Вам нужно реализовать функцию с именем bin_search(lst) со следующими требованиями: 1) Имя функции - строго фиксировано (bin_search). 2) Функции подаётся на вход список lst (список строк, каждая из которых является строковым представлением соответствующей даты. Например: ['1000', '1280', '1415']) 3) Функция возвращает число (искомый индекс 1415 года во входном списке). 4) В качестве отступов в функции используется 4 пробела. 5) Функция реализует алгоритм бинарного поиска. Приведём пример функции, которую следует сдавать в тестовую систему (в данном случае реализован не бинарный поиск, а обычный, поэтому такое решение засчитано не будет): def bin_search(lst): for i in range(len(lst)): if int(lst[i])==1415: return i Формат ввода Входной параметр функции представляет список строк- дат. Формат вывода Вывести в качестве возвращаемого функцией bin_search(lst) значения (через return) индекс i элемента со значением '1415'. Пример : Ввод 1414 1414 1415 Вывод 2 Примечания 1) Отсчёт индексов начинается с нуля. 2) Обратите внимание, что входной параметр функции - список строк. 3) Нужно реализовать бинарный поиск, который работает достаточно быстро. Остальные, менее эффективные алгоритмы (например, с find()) не пройдут по ограничению времени. В этом случае будет получена ошибка Runtime Error (RE). 4) Не забывайте, что во входных данных числа представлены в виде строк. Обычное сравнение строк происходит в лексикографическом порядке. Т.е. '111'<'12'. Нам же нужно сравнивать именно числа. Поэтому внутри бинарного поиска перед сравнением нужно выполнять преобразование строк к int. 5) Преобразование всех элементов исходного списка к int занимает много времени. В бинарном поиске нам не нужны все значения списка. Мы только смотрим на середины отдельных срезов исходного списка. Поэтому нужно выполнять преобразование строки к int только для тех элементов, которые мы сравниваем с числом 1415. 6) Вообще говоря, бинарный поиск работает только с отсортированным списком. 7) В нашем случае не нужно дополнительно сортировать исходный список, т.к. он уже отсортирован (см. условие). 8) При проверке собственной реализации бинарного поиска рассмотрите ситуации: - список из одного элемента, - список из чётного количества элементов, - список из нечётного количества элементов (больше одного). Вот, что получилось у меня, но это неправильно. Я не очень понимаю эту тему, можете помочь, пожалуйста? def bin_search(lst): low = 0 high = len(lst) - 1 while low <= high: middle = (low + high)//2 if int(lst[i]) == 1415: return i
0
|
04.12.2022, 10:39 | |
Ответы с готовыми решениями:
0
Бинарный поиск Бинарный поиск Бинарный поиск Бинарный поиск Бинарный поиск диапазона |
04.12.2022, 10:39 | |
04.12.2022, 10:39 | |
Помогаю со студенческими работами здесь
1
Тема Бинарный поиск Используя бинарный поиск Бинарный поиск , максимизировать медианный балл Бинарный поиск Создание упорядоченного массива Бинарный поиск по ответу - Малыш и Карлсон Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Rust или Go? А может C++?
hw_wired 28.01.2025
С каждой новой технологией или методологией появляются новые языки программирования, призванные решать конкретные задачи либо улучшать аспекты производительности и безопасности. Среди множества. . .
|
Fortran и WinAPI: как создать приложение с графическим интерфейсом
hw_wired 28.01.2025
Fortran — это один из старейших высокоуровневых языков программирования, широко используемый в науке и инженерии уже несколько десятилетий. Его название происходит от "Formula Translation" (перевод. . .
|
Списки в Haskell
hw_wired 28.01.2025
Haskell является функциональным языком программирования, который отличается лаконичностью синтаксиса и мощными абстракциями. Важным концептом в Haskell являются списки — упорядоченные коллекции. . .
|
Функции высшего порядка в Haskell
hw_wired 28.01.2025
Haskell – это современный функциональный язык программирования, который получил широкое распространение благодаря своей выразительности и мощным абстракциям. Одной из ключевых особенностей Haskell. . .
|
Как в цикле обойти все поля объекта в JavaScript
bytestream 28.01.2025
Объекты в JavaScript представляют собой фундаментальные структуры данных, которые позволяют хранить и организовывать связанную информацию в виде пар ключ-значение. Каждый объект можно представить как. . .
|
Как выбрать строки в DataFrame по значению столбца в Pandas
bytestream 28.01.2025
В области анализа данных библиотека Pandas стала незаменимым инструментом для работы с табличными данными в Python. Эта мощная библиотека предоставляет множество функций для эффективной обработки и. . .
|
Как сделать перенос строки в Bash
bytestream 28.01.2025
При работе с командной оболочкой Bash разработчики часто сталкиваются с необходимостью форматирования текстового вывода, где ключевую роль играет правильное управление переносами строк. Умение. . .
|
Поиск подстроки в строке с помощью Bash
bytestream 28.01.2025
Поиск подстроки в строке является одной из важных задач в программировании и обработке текстов. Применение такого поиска можно найти в самых разных областях, от анализа данных до разработки. . .
|
[golang] 169. Majority Element
alhaos 28.01.2025
Тут надо вернуть "мажористый" элемент который встречается в слайсе больше чем в половине случаев. По условиям задачи во входных данных такой элемент обязан присутствовать.
/ / . . .
|
Когда лучше использовать LinkedList вместо ArrayList в Java
bytestream 28.01.2025
При разработке Java-приложений выбор правильной структуры данных играет ключевую роль в обеспечении эффективности и производительности программы. ArrayList и LinkedList являются двумя. . .
|
Какой ответ HTTP лучше использовать: 403 Forbidden или 401 Unauthorized, когда недостаточно прав
bytestream 28.01.2025
В современной веб-разработке правильная обработка ошибок и точное информирование клиентов о статусе их запросов играют критическую роль в создании надежных и безопасных приложений. Особое внимание. . .
|
Как получить список всех файлов коммита в Git
bytestream 28.01.2025
Система контроля версий Git представляет собой мощный инструмент для управления изменениями в программном коде и других файлах проекта. В основе работы Git лежит концепция коммитов - снимков. . .
|