Оригинал: Exercise 21: Binary Search
Переводчик: Феликс Ло
Лицензия: CC BY-NC-SA 4.0
Гордо использует Google Translate
Алгоритм бинарного поиска — это простой метод поиска элемента в отсортированном списке элементов. Он легко описывается как принимает отсортированный список и делит его пополам до тех пор, пока не будет найден элемент или весь список не будет пройден. Если вы завершили упражнение 20, то этот должно быть легче.
Если мы хотим найти число (X) в отсортированном списке чисел, мы будем выполнять следующие действия:
Этот алгоритм применим ко всему, что можно сравнить на равенство. Он работает со строками, числами и любыми другими объектами, которые можно отсортировать.
При анализе производительности не включайте время, затраченное на сортировку чисел. Это важно при глобальной оптимизации, но здесь нас интересует скорость работы алгоритма бинарного поиска. Вы можете использовать встроенный алгоритм сортировки Python для сортировки list, так как это не является основной задачей. Этот урок полностью посвящен скорости поиска между тремя типами структур данных.## Исследовательское обучение
Определите максимальное количество сравнений, которое может потребоваться алгоритму. Сначала попробуйте самостоятельно понять это, а затем исследуйте алгоритм, чтобы найти истинный ответ. После этого запомните этот истинный ответ.
Может ли любой из этих оптимизаций быть применён к сортировочному алгоритму?
Попробуйте визуализировать, что делает алгоритм в каждом из данных структур данных. Например, в DoubleLinkedList
вы можете почти представить себе процесс перемещения вперед и назад до тех пор, пока не будет найдено решение.
Чтобы дать себе дополнительный вызов, попробуйте сделать DoubleLinkedList
отсортированным списком, где каждое вставление всегда происходит на правильное место после сортировки. Теперь напишите анализ производительности, включая добавление элементов и сортировку списка чисел, чтобы лучше понять, как можно повысить общую производительность.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )