| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [FAQ][Pascal|VB]Сортировка массива поиском наибольшего(наименьшего) |
| Автор: THandle 20.3.2008, 17:15 | ||||||||||||||||||||||||||
| Рассмотрим реализацию алгоритма сортировки поиском наибольшего. Описание: Массив условно делится на упорядоченную и неупорядоченную части. Первоначально весь массив неупорядочен. На каждом шаге алгоритма выбирается максимальный элемент в неупорядоченной части, он ставится на первое место в неупорядоченной части, после чего граница смещается на один элемент и цикл повторяется до тех пор, пока весь массив не станет упорядоченным. Пример на Паскале:
Пример на Visual Basic:
Теперь посмотрим как всё это работает(используя пример на Паскале). Алгоритм сортировки реализован в процедуре:
В качестве единственного параметра в процедуру передается изменяемый массив.
В цикле от 1 до константы MAX(объявлена ранее) делаем следующее:
pmax это у нас индекс максимального числа в массиве на проходе i. каждый раз мы ему присваиваем минимально возможное значение, то етсть i.
тут мы находим индекс максимального элемента массива на данном проходе. В переменной pmax находится этот самый индекс. Главное заметьте, что в цикле мы идем не с 1, а с i, то есть как бы разделяем массив на упорядоченную часть и не упорядоченную.
ставим на место i-ного элемента в упорядоченной части максимальный элемент, который находится в pmax. а элемент с индексом i переносим на место максимального элемента. Всё. Вот небольшой пример как будет сортироваться следующий массив:
Это неупорядоченный массив из 5 элементов. 1 шаг сортировки:
2 шаг сортировки:
3 шаг сортировки:
4 шаг сортировки:
получаем на выходе следующий отсортированный массив:
Авторы: http://vingrad.ru/@Rrader - пример на VB. http://vingrad.ru/@THandle - всё остальное Идея появилась на основе следующей темы: http://forum.vingrad.ru/forum/topic-200813/0.html |