3.2.2 Распространённые алгоритмы поиска и сортировки и структуры данных

Значительная часть работы компьютера уходит на поиск и сортировку данных, хотя существуют и другие необходимые алгоритмы (например, связанные с графами). Для поиска и сортировки данных созданы десятки алгоритмов, выбор которых зависит от устройства данных, предшествующей упорядоченности, носителя данных, частоты запросов и их типа, а также от используемого объёма памяти.
В случае пузырьковой сортировки рядом стоящие рядом значения меняются местами в подходящем направлении. Этот метод подходит в случае, когда набор данных почти отсортирован и имеются единичные неточности между данными стоящими рядом. В случае более разрозненного набора данных алгоритм является очень медленным. Просто программируется.
В случае сортировки выбором при каждом проходе отыскивается наименьшее значение и перемещается на подходящее место. Время работы алгоритма не зависит от предшествующего состояния данных.
Основными используемыми в программировании типами являются текст (string), целое число и дробное число. Причём, к примеру, телефонный номер чаще всего лучше представить текстом, потому что у целого числа есть ограничение по величине. Структурные типы есть смысл использовать, когда значение само по себе делится на части их, возможно понадобится использовать отдельно друг от друга. Например, адрес может быть записью, где различными полями будут индекс, улица, город. В массиве обычно находятся однотипные данные, к примеру, список адресов может быть представлен массивом. В случае массивов обычно требуется знать максимальное количество элементов. Если же требуется добавлять данные в середину или в конец, тогда связанные списки с их гибкой структурой подойдут для этой задачи лучше.
Для перемены мест двух значений в общем случае требуется третье место для хранения промежуточных данных - держа в руках арбуз и дыню, без дополнительной поддержки очень трудно поменять их местами.
Дополнительное чтение: http://www.cs.tlu.ee/~inga/alg_andm/sorting_Python.pdf