![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
THandle |
|
||||||||||||||||||||||||||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 30 Всего: 372 |
Рассмотрим реализацию алгоритма сортировки поиском наибольшего.
Описание: Массив условно делится на упорядоченную и неупорядоченную части. Первоначально весь массив неупорядочен. На каждом шаге алгоритма выбирается максимальный элемент в неупорядоченной части, он ставится на первое место в неупорядоченной части, после чего граница смещается на один элемент и цикл повторяется до тех пор, пока весь массив не станет упорядоченным. Пример на Паскале:
Пример на Visual Basic:
Теперь посмотрим как всё это работает(используя пример на Паскале). Алгоритм сортировки реализован в процедуре:
В качестве единственного параметра в процедуру передается изменяемый массив.
В цикле от 1 до константы MAX(объявлена ранее) делаем следующее:
pmax это у нас индекс максимального числа в массиве на проходе i. каждый раз мы ему присваиваем минимально возможное значение, то етсть i.
тут мы находим индекс максимального элемента массива на данном проходе. В переменной pmax находится этот самый индекс. Главное заметьте, что в цикле мы идем не с 1, а с i, то есть как бы разделяем массив на упорядоченную часть и не упорядоченную.
ставим на место i-ного элемента в упорядоченной части максимальный элемент, который находится в pmax. а элемент с индексом i переносим на место максимального элемента. Всё. Вот небольшой пример как будет сортироваться следующий массив:
Это неупорядоченный массив из 5 элементов. 1 шаг сортировки:
2 шаг сортировки:
3 шаг сортировки:
4 шаг сортировки:
получаем на выходе следующий отсортированный массив:
Авторы: rrader - пример на VB. THandle - всё остальное ![]() Идея появилась на основе следующей темы: http://forum.vingrad.ru/forum/topic-200813/0.html |
||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |