Меню сайта
Наш опрос
Оцените мой сайт
Всего ответов: 6
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » 2014 » Июль » 22 » Еще раз об алгоритмах сортировки
15:30
Еще раз об алгоритмах сортировки
Часто возникает ситуация написать какую-нибудь сортировку, но как назло - просто не можешь вспомнить как правильно расставить параметры цикла, что с чем сравнивать и что переставлять. Приведу пример одного такого неправильного алгоритма:for с нуля" и правильно? Для этого нужно знать как они работают. Все сортировки упорядочивают элементы массива по возрастанию или по убыванию их значений. Пусть у нас есть массив целых  чисел (но может быть и действительных чисел и символов и строк и всё, что можно выразить в виде битов и байтов). Обозначим его за "A". Количество элементов в массиве пронумерованы от 1 до n .Рассмотрим все известные алгоритмы сортировки:- обменная (пузырек и челнок),- выбором,- вставками.Все остальные (Шелла, Хоара и т.д.) основаны на них.Сортировка пузырьком (часто применяемая). Она означает, по аналогии образования пузырьков в кипящей воде, что более легкий по весу пузырек (элемент массива) всплывает снизу на поверхность воды. Так в массиве это "более легкий" (наименьший элемент ) передвигается от начала к концу массива.Рассмотрим на примере для легкий", переместится в конец: 2, 1, 5, 3, 0. При этом идет сравнение двух рядом стоящих элементов массива (пара чисел), т.е. если на i-м месте элемент меньше рядом стоящего (If A[i]<A[i+1]), то меняем их местами. Начинаем с самого первого места и до предпоследнего (если брать последний, то следующего не будет!). Запишем это с помощью цикла с параметром for:for переприсваивание (). Далее, со 2-го пути прицепляет в конец вагон A[i+1] (). При этом паровоз движется на 2-й путь "задом", т.е. со стороны прицепленного вагона A[i]. Затем возвращаем паровоз temp в конец, т.е. прицепляемся к вагону A[i+1] с конца вагончиках", которые "следуют" один за другим, то сразу правильно запишешь перестановку.Или еще пример: нужно переложить деньги из одного кошелька в другой. Здесь двумя руками не обойдешься, нужен кто-то, кому в начале отдаешь деньги на "временное хранение" (), затем перекладываешь из другого кошелька другую сумму денег (), затем забираешь деньги у товарища и кладешь эту сумму во второй кошелек for for for begini:=k;while a[i]>a[i+1] do begini:=k;a[0]:=a[k+1];while a[i]>a[i+1] do begini:=k;while ( i>0) and (a[i]>a[i+1]) do свое место":for begini:=k;temp:=a[i+1]; while ( i>0) and (a[i]>temp) do thena[i+1]:= temp;end;for thena[i]:=a[i-1];a[i-1]:= temp;end;end;end;Все эти алгоритмы не являются быстрыми. Про быстрые алгоритмы, такие как алгоритм Хоара, Шелла и другие, можно найти на сайте algolist.manual.ru и на других сайтах. Вот еще примеры алгоритмов сортировки: 1) for
Просмотров: 108 | Добавил: admin | Рейтинг: 0.0/0
Всего комментариев: 0
avatar
Форма входа
Календарь
«  Июль 2014  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031
Архив записей