Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Алгоритм сортировки прямой вставкойСодержание книги Поиск на нашем сайте 1. Начинаем со второго элемента, т.е. полагаем i = 1. 2. Выбираем очередной элемент a [ i ] из неупорядоченной части массива. 3. Просматривая последовательно элементы из упорядоченной части и сравнивая их с a [ i ], находим место для i -го элемента. 4. Все элементы из левой части, большие a [ i ], сдвигаем на 1 позицию вправо; на освободившееся место ставится элемент a [ i ]. 5. Если i < N – 1, увеличиваем i на единицу и идем на шаг 2.
Приведем пример. Упорядоченная часть массива выделена синим цветом, вставляемый элемент – красным.
В реальном процессе поиска подходящего места для вставляемого элемента x удобно начинать просмотр упорядоченной части массива с “конца”, сравнивать x с очередным элементом a [ j ], а затем либо вставлять элемент x на место, либо a [ j ] сдвигать вправо.
Теперь приведем блок-схему сортировки с помощью прямой вставки.
Заметим, что процесс поиска подходящего места заканчивается при выполнении одного из двух условий: 1. найден элемент a [j], меньший или равный вставляемому элементу x; 2. достигнут левый конец упорядоченной части массива. Следовательно, порядок элементов с равными ключами не изменится, а, значит, метод устойчив. Попробуем улучшить сортировку. Такой типичный случай повторяющегося процесса с двумя условиями окончания позволяет нам воспользоваться уже известным приемом добавления “барьера”. (Вставить ссылку на поиск с барьером). Применим его, поставив барьер со значением x в начало массива, т.е. положив a [0] = x (напомним, что для этого необходимо увеличить размер массива на 1, а сам массив располагать со второй позиции, т.е. с a [1]). Приведем блок-схему сортировки с помощью прямой вставки с барьером.
Сортировка прямой вставкой с барьером устойчива. Однако, барьер – не единственное улучшение. Обратим внимание на то, что левая часть массива упорядочена. В этом случае было бы логично при поиске места для вставки элемента x использовать метод двоичного поиска (см. п.1.2.), а затем сдвинуть часть упорядоченного массива на одну позицию вправо. Такой модифицированный алгоритм называется прямой вставкой с бинарным поиском. (вставить ссылку на бинарный поиск). Напомним суть метода бинарного поиска. Делим упорядоченную часть массива пополам. Сравниваем срединный элемент a [ m ] с элементом x. Если x меньше срединного элемента, то искать место для x следует в левой от a [ m ] части массива, т.е. сдвигаем правую границу, в противном случае место для x следует искать в правой от a [ m ] упорядоченной части массива, т.е. сдвигаем левую границу. Снова делим получившуюся упорядоченную часть массива пополам и т.д. Таким образом, мы разбили алгоритм на 2 части: поиск места для вставляемого элемента и сдвиг части массива (освободить место для вставляемого элемента). Приведем блок-схему этого алгоритма. Здесь: N – размерность массива, L – индекс левой границы, R – индекс правой границы.
Сортировка прямой вставкой с двоичным поиском неустойчива. Подсчитаем трудоемкость алгоритма прямой вставки. В худшем случае при поиске места для очередного элемента окажется, что каждый раз элемент требуется поставить на первое место. Так как длина левой упорядоченной части массива меняется от 1 до (N –1), то также меняется и число сдвигов элементов массива, то есть число присвоений. Затем первому элементу массива присваивается значение вставляемого элемента. Таким образом, общее число присвоений равно
Сортировка «пузырек»
Сортировка методом “пузырек” относится к третьей категории – сортировки с помощью обменов. Суть этого метода в следующем: если два рядом стоящих элемента расположены не по порядку, то они меняются местами. Процесс повторяется до тех пор, пока массив не будет упорядочен. Другими словами, просматривается массив, и элементы сравниваются попарно: a [ i ] с a [ i + 1]. Если a [ i ] больше a [ i + 1], то элементы обмениваются значениями. В результате одного просмотра самый большой, “тяжелый” элемент сместится на последнюю позицию. Опять начинаем просмотр массива с начала и т.д.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Последнее изменение этой страницы: 2017-02-08; просмотров: 906; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.006 с.) |