Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2012, 13:14   #1
Camelot_2012
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 90
Печаль Сортировки массивов!

Дана последовательность: 9,6,3,7,0. Записать с помощью сортировки: обмена, выбора и простыми вставками(включения).
Camelot_2012 вне форума Ответить с цитированием
Старый 04.03.2012, 15:58   #2
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию

1)Обмен ( или же Сортировка пузырьком )
( сюда же в принципе могу впихнуть "улучшенный метод", но думаю будет жирно как для вас) учитывая что вы даже не пытались ничего написать, или же банально поискать.

Суть:
За каждый проход элементы последовательно сравниваются попарно и, если порядок в паре неверный, выполняется обмен элементов. Проходы по массиву повторяются до тех пор, пока на очередном проходе не окажется, что обмены больше не нужны, что означает — массив отсортирован. При проходе алгоритма, элемент, стоящий не на своём месте, «всплывает» до нужной позиции как пузырёк в воде, отсюда и название алгоритма.

Пример:
на входе ( 1 6 3 5 4 )
Будем идти по порядку, выбираем первую пару 1 и 6 ( первый проход )
(1 6 3 5 4) 1>6 ( условие не выполняется ), переходим к след. паре
6 и 3 ( второй проход )
(1 6 3 5 4) 6>3 ( условие выполняется ) значит эти два элемента меняются местами отсюда получаем след.
(1 3 6 5 4) сравниваем след. два элемента 6>5 ( условие выполняется )
( 1 3 5 6 4 ) 6>4
( 1 3 5 4 6 ) ( третий проход ) наш алгоритм снова сравнивает ... и когда он доходит до пары 5 и 4 ( 5>4 ), то происходит обмен.
И далее когда массив снова проходит ( а в даной программе он проходит ещё раз, т.к. это далеко не идеальный вариант ), то после получаем результирующий упорядоченный массив чисел.

Код:
For i:=1 to n do 
 For j:=1 to n-1 do
  If Mas[j]>Mas[j+1] then begin
     Rez:=Mas[j]; { переменная Rez - временный буфер в котором храним  сравниваемые переменные }
     Mas[j]:=Mas[j+1];
     Mas[j+1]:=Rez;
 end;
2)Вставкой
Сначала он сортирует два первых элемента массива. Затем алгоритм вставляет третий элемент в соответствующую порядку позицию по отношению к первым двум элементам. После этого он вставляет четвертый элемент в список из трех элементов. Этот процесс повторяется до тех пор, пока не будут вставлены все элементы.
Код:
 
for i:=2 to n do begin
   j:=1;
  while (j>1) and (Mas[j]<Mas[j-1]) do beign
       Rez:=Mas[j];
       Mas[j]:=Mas[j-1];
       Mas[j-1]:=Rez;
       j:=j-1;
   end;
end;
3)Выбором
Находим минимальное значение в текущем списке
производим обмен этого значения со значением на первой неотсортированной позиции
теперь сортируем хвост списка, исключив из рассмотрения уже отсортированные элементы
Код:
for i:=1 to n-1 begin
  Min:=Mas[i];
  N_min:=j;
for j:=( i+1 ) to n do 
 if Mas[j] then begin
    Min:=Mas[j];
    N_min:=j;
  end;
Mas[N_min]=Mas[j];
Mas[i]:=Min;
end;
Если надо что будет пояснить пишите или же сюда, или же в skype.
Люблю на ты.Я человек простой

Последний раз редактировалось Leshii; 04.03.2012 в 16:19.
Leshii вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритмы сортировки массивов С++ Sunless Помощь студентам 1 29.03.2011 17:10
Пузырьковый метод сортировки массивов Lunex.08 Общие вопросы C/C++ 4 07.10.2010 16:00
Освоение алгоритмов сортировки элементов двумерных массивов. николай28 Паскаль, Turbo Pascal, PascalABC.NET 1 31.05.2010 22:30
Методы сортировки массивов!!! >>arty<< Помощь студентам 2 20.01.2010 18:39