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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2010, 15:05   #1
>>arty<<
Пользователь
 
Регистрация: 26.06.2009
Сообщений: 78
Восклицание Методы сортировки массивов!!!

Пмогите с методами сортировки массивов: Пузырьковая и Пузырьковая ВСТАВКАМИ!!!
Необходимо массив просортировать 3 вариантами (для каждого метода сортировки): Наихудший (все элементы находятся не на своих местах) - первоначально упоядочить массив по возрастанию - исходная расстановка по убыванию) и Наилучший (все элементы на своих местах) - исходная расстановка произвольная!
Я если честно с этим впервые сталкиваюсь..... хотелось бы чтоб объяснили, желательно с коментами подробными в коде, чтоб было понятно что откуда растёт (Задание делается в старом добром ПАСКАЛЕ)...
массив то я вывел и даж процедуру написал (точнее уже готовую взял)
в приложенном исходнике уже лежит вывод массива в произволной форме (и только.....). Прошу помочь с данным заданием так как в сортировках не силён
Вот уже готовые процедуры сортировки:
Код:
{===== Пузырьковая вставками =====}
Procedure Sort (var a : Seq);
Var i, j, k, t : integer;
begin
   for i:=2 to N do begin  { перебор входного массива }
   {*** вх.множество - [i..N], вых.множество - [1..i] }
     t:=a[i]; { запоминается значение нового эл-та }
     j:=i-1; {поиск места для эл-та в вых. множестве со сдвигом}
       { цикл закончится при достижении начала или, когда
         будет встречен эл-т, меньший нового }
       while (j >= 1) and (a[j] > t) do begin
         a[j+1]:=a[j]; { все эл-ты, большие нового сдвигаются }
         j:=j-1; { цикл от конца к началу выходного множества }
         end;
       a[j+1]:=t; { новый эл-т ставится на свое место }
       end;
end;

{===== Пузырьковая =====}
Код:
Procedure Sort( var a : seq);
Var nn, i, x : integer;
begin
   nn:=N; { граница входного множества }
   repeat x:=1; { признак перестановок }
     for i:=2 to nn do { перебор входного множества }
     if a[i-1] > a[i] then begin { сравнение соседних эл-в }
       x:=a[i-1]; a[i-1]:=a[i]; a[i]:=x; { перестановка }
       x:=i-1; { запоминание позиции  }
     end;  nn:=x;   { сдвиг границы }
   until (nn=1); {цикл пока вых. множество не захватит весь мас.}
end;
Приложение (Исходник):SORT.zip

Последний раз редактировалось Stilet; 20.01.2010 в 15:14.
>>arty<< вне форума Ответить с цитированием
Старый 20.01.2010, 15:17   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Легонько намекну:
Код:
const N=8;
Type seq = array [1..n] of integer;
var
 a,b:seq;
 i:integer;
{Џг?ламЄ?ў?п б?авЁа?ўЄ?}
Procedure Sort( var a:seq);
Var nn, i, x : integer;
begin
   nn:=N; { Ја??Ёж? ўе????Ј? ????Ґбвў? }
   repeat x:=1; { ЇаЁ???Є ЇҐаҐбв???ў?Є }
     for i:=2 to nn do { ЇҐаҐЎ?а ўе????Ј? ????Ґбвў? }
     if a[i-1] > a[i] then begin { ба?ў?Ґ?ЁҐ б?бҐ??Ёе н?-ў }
       x:=a[i-1]; a[i-1]:=a[i]; a[i]:=x; { ЇҐаҐбв???ўЄ? }
       x:=i-1; { ??Ї??Ё???ЁҐ Ї??ЁжЁЁ  }
     end;  nn:=x;   { б?ўЁЈ Ја??Ёжл }
   until (nn=1); {жЁЄ? Ї?Є? ўле. ????Ґбвў? ?Ґ ??еў?вЁв ўҐбм ??б.}
end;
Begin

For i:=1 to N do begin
 A[i]:=Random(100); Write(A[i],' ');
end;
Sort(a);
 writeln;
For i:=1 to N do begin
  Write(A[i],' ');
end;

readln;
end.
Понял смысл?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.01.2010, 18:39   #3
>>arty<<
Пользователь
 
Регистрация: 26.06.2009
Сообщений: 78
Злость

а почему вместо коментов кракозябры? нельзя ли исходник как то запаковать в архив и выложить его чтоб скачать можно было? Либо чтоб на форуме русскими буквами отображалось....
И ещё... что нужно подправить чтоб просортировать в остальных случаях ???

Последний раз редактировалось >>arty<<; 20.01.2010 в 18:51.
>>arty<< вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пузырьковый метод сортировки массивов Lunex.08 Общие вопросы C/C++ 4 07.10.2010 16:00
Методы сортировки с квадратичной трудоемкостью ai\ekcah^p Общие вопросы C/C++ 4 08.07.2010 21:53
Паскаль методы сортировки Igomax Помощь студентам 5 24.10.2009 15:59
Методы сортировки. Teddy Помощь студентам 1 16.10.2008 19:08