Массив делится на две части - отсортированную и неотсортированную. В начале работы в отсортированную часть входит только один первый элемент. Алгоритм выполняет n-1 проход, на каждом из которых поочередно выбираются элементы из неотсортированной части и вставляются в отсортированную часть таким образом, чтобы не нарушить в ней упорядоченность элементов.
На некотором i-м проходе элементы a1, a2, ..., ai составляют отсортированную часть, а элементы ai+1, ai+2, …, an - неотсортированную. Если f(ai) ≤ f(ai+1), то элемент ai+1 включается в отсортированную часть. В противном случае значение ai+1 временно сохраняется в переменной s = ai+1, а элемент ai сдвигается на одну позицию вправо.
Далее ключ f(s) поочередно сравнивается с ключами следующих элементов из отсортированной части справа налево, т.е. с ключами f(ak), k = i-1, i-2, ..., 1. Если f(S) < f(ak), то элемент ak сдвигается на одну позицию, вправо. В противном случае элемент S записывается в k+1-ю позицию.
Скорость сортировки простыми вставками можно увеличить, если для поиска позиции элемента ai+1 в отсортированной части использовать метод бинарного поиска, так как элементы упорядочены. Это уменьшает общее число сравнений от O(n2) до O(n log2n), но количество перестановок элементов при этом не уменьшается и имеет порядок O(n2).
Опубликовал Kest
January 22 2010 16:31:57 ·
0 Комментариев ·
9808 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.