Алгоритм представляет собой набор инструкций. Определение действительно так просто. Алгоритм может быть таким же простым, как и предоставление таких инструкций:
- Спуститесь по улице.
- Поверни направо на первом повороте.
- Найдите второй дом слева.
- Постучать в дверь.
- Доставьте пакет.
Но хотя определение алгоритма простое, фактический смысл и то, как он влияет на нашу жизнь, может быть довольно сложным.
Пример алгоритма
Общим примером алгоритма, который мы используем в нашей повседневной жизни, является рецепт. Этот набор инструкций дает нам все необходимые ингредиенты и указания о том, что делать с этими ингредиентами. Звучит просто, не так ли?
Но что, если вы не знаете, где хранится мерная чашка? Вам понадобится алгоритм для его поиска. Возможно, вам даже понадобится алгоритм использования измерительной чашки.
Поэтому, хотя алгоритм представляет собой набор инструкций, он также должен учитывать, кто или что будет интерпретировать эти инструкции. Например, если вы дадите указания другу, подробно рассказывающему, как добраться из дома в ближайший продуктовый магазин, ваш друг будет знать, как добраться до этого магазина, если они знают, где находится ваш дом. Они не способны (пока) найти этот конкретный продуктовый магазин, скажем, дом другого друга.
Таким образом, алгоритм может быть простым и сложным. И когда мы говорим в терминах компьютерных алгоритмов, понимание того, что компьютер способен делать, является фундаментальной частью формулировки алгоритмов.
Как эволюционировали алгоритмы сортировки
Одним из самых ранних созданных алгоритмов была процедура сортировки пузырьков. Сортировка Bubble - это метод сортировки чисел, букв или слов путем циклического набора данных, сравнения каждого набора значений бок о бок и их замены при необходимости.
Этот цикл повторяется до тех пор, пока алгоритм не сможет перемещаться по всему списку без необходимости менять что-либо, что означает правильность сортировки значений. Этот тип алгоритма часто упоминается как рекурсивный алгоритм, потому что он циклически повторяется сам по себе, пока не завершит задачу.
Этот тип алгоритма может выглядеть так же просто, как:
- Перейдите к первому значению.
- Проверьте это значение на следующее значение и замените позиции, если это необходимо.
- Перейдите к следующему значению и повторите сравнение.
- Если мы находимся в конце списка, вернитесь к вершине, если какое-либо значение было заменено во время цикла.
Но тип пузырей не оказался самым эффективное способ сортировки значений. С течением времени компьютеры стали более способными быстро выполнять сложные задачи, появились новые алгоритмы сортировки.
Один такой алгоритм просматривает первый список и создает второй список отсортированных значений. Этот метод делает только один проход через исходный список, и с каждым значением он будет проходить через второй список, пока не найдет нужное место для размещения значения. Обычно он эффективнее, чем метод сортировки пузырьков.
Это то, где алгоритмы могут стать действительно сумасшедшими. Или действительно интересно, в зависимости от того, как вы на это смотрите.
В то время как метод сортировки пузырьков считается одним из самых неэффективных методов сортировки значений разными способами, если исходный список предварительно настроен, сортировка пузырьков может быть одной из самый эффективный. Это потому, что в этом случае алгоритм сортировки пузырьков будет проходить через список за один раз и определить, что он правильно отсортирован.
К сожалению, мы не всегда знаем, преподносится ли наш список, поэтому нам нужно выбрать алгоритм, который будет наиболее эффективным для использования в среднем по большому числу списков.
Что мы узнаем из алгоритма сортировки пузырьков
- Алгоритмы развиваются со временем, поскольку мы находим более эффективные способы делать вещи и / или компьютеры, которые становятся более способными выполнять сложные задачи.
- Иногда выбираются алгоритмы, потому что они «более» эффективны «большинство» времени.
- Просто потому, что алгоритм более эффективен большую часть времени, не означает, что он всегда лучший в каждом отдельном случае.
Алгоритмы Facebook и многое другое в повседневной жизни
Алгоритмы на работе помогают людям каждый день. При поиске в Интернете работает алгоритм поиска лучших результатов поиска. Спросите своего смартфона о направлениях, и алгоритм определяет лучший маршрут для вас. И когда вы просматриваете Facebook, алгоритм решает, какие из сообщений Facebook нашего друга наиболее важны для нас. (Будем надеяться, что наши друзья не узнают, какой Facebook думает, что нам нравится больше всего!)
Но мышление алгоритмически может помочь нам далеко за пределами наших компьютерных жизней. Это может даже помочь нам построить лучший сэндвич.
Скажем, я начинаю с двух кусочков хлеба, разбрасывая горчицу на один кусочек и майонез на другом ломтике. Я положил кусочек сыра на хлеб с майонезом, немного ветчины поверх этого, немного салата, два ломтика помидора, а затем накинуть его на этот кусочек с горчицей на нем. Хороший сэндвич, не так ли?
Определенно, если я ем его сразу. Но если я оставлю его на столе какое-то время, этот верхний кусочек хлеба может стать сырым от впитывания некоторых из этих помидоров. Это проблема, которую я не вполне ожидал, и я мог бы делать бутерброды в течение многих лет, прежде чем замечать, но как только я это сделаю, я могу начать думать о том, как изменить свой алгоритм, чтобы построить лучший сэндвич.
Например, я мог избавиться от помидора. Но я не хочу терять этот томатный вкус. Поэтому вместо этого я могу положить помидор на сэндвич после хлеба и салата. Это позволяет салату формировать защитный барьер между томатом и хлебом.
Так развивается алгоритм. И алгоритм не должен запускаться компьютером как алгоритм.Алгоритм - это процесс, и процессы вокруг нас.