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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2008, 10:18   #1
Biker29
 
Регистрация: 23.11.2008
Сообщений: 3
По умолчанию Сортировка шейкер-пузырьком (Delphi)

Написал програмку по сортировке. Ввожу размерность массива, формирую массив и сортирую. При этом выводится колличество перестановок и сравнений. И нужна блок схема к сортировке, а я с ними не работал. Помогите пожалуйста.



Код:
procedure TForm1.Button1Click(Sender: TObject); //формировать массив
 begin
  n:=strtoint(Edit1.Text);
   if n>0 then begin
    for i:=1 to n do
     begin
    a[i]:= random(n*10)+1;
   end;
  end;
end;

procedure TForm1.Button4Click(Sender: TObject); //вывод
 begin
  s:='';
   self.memo1.Clear;
    for i:=1 to n do
     begin
    s:=s+' '+inttostr(a[i]);
   memo1.lines.Add(inttostr(a[i]));
  end;
 showmessage(s);
end; 

procedure TForm1.Button5Click(Sender: TObject);
begin
  lb:=1;
  ub:=n-1;  z1:=0;
  z:=0;     z0:=0;
  T1:=0;    t:=0; t0:=0;
Repeat
 for i:=1 to ub do
  begin
  z0:=z0+1;
     begin
     if A[i]>A[i+1] then
      begin
       a0:=A[i+1];   
      A[i+1]:=A[i];
     A[i]:=a0;
     t0:=t0+1;
 end;
end;
end;
 ub:=ub-1;
  for i:=ub downto 1 do
   begin           z1:=z1+1;
    if A[i-1]<A[i] then
     begin
      a0:=A[i+1]; 
      A[i+1]:=A[i];
     A[i]:=a0; t1:=t1+1;
    end;
   end;
  Until lb>ub;
  z:=z0+z1;          t:=t1+t0;
  Label1.Caption:='количество сравнений:  '+ inttostr(z);
  Label2.Caption:='количество перестановок:  '+ inttostr(T);
 end;
Biker29 вне форума Ответить с цитированием
Старый 23.11.2008, 10:42   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Цитата:
Написал програмку по сортировке. Ввожу размерность массива, формирую массив и сортирую. При этом выводится колличество перестановок и сравнений.
Предлагаю такой вариант сортировки (кол-во перестановок и сравнений выходит несколько меньшим):
Код:
var A: array[1..6000] of Word;
    Sort: array[Word] of Integer;
    N: Integer;

procedure TForm1.Button1Click(Sender: TObject);
// Формировать массив:
var I: Integer;
begin
  Randomize;
  N := StrToInt (Edit1.Text);
  if (N < 1) or (N > 6000) then N := 1;
  Memo1.Lines.Clear;
  for I := 1 to N do
  begin
    A[I] := Random (N * 10) + 1;
    Memo1.Lines.Add (IntToStr (A[I]));
  end; {for}
end;

procedure TForm1.Button2Click(Sender: TObject);
// Сортировать массив:
var I, J: Integer;
begin
  Memo1.Lines.Clear;
  FillChar (Sort, SizeOf (Sort), 0);
  for I := 1 to N do
    Inc (Sort[A[I]]);
  for I := 1 to N * 10 do
    for J := 1 to Sort[I] do
      Memo1.Lines.Add (IntToStr (I));
  ShowMessage ('Количество сравнений: 0'#13#10'Количество перестановок: 0');
end;
Arigato вне форума Ответить с цитированием
Старый 23.11.2008, 10:47   #3
Biker29
 
Регистрация: 23.11.2008
Сообщений: 3
По умолчанию

Мою прогу препод зачел, мне нужна блок-схема сортировки. Или подскажите, пожалуйста, сайт, где можно найти блок-схему для сортировки.

Последний раз редактировалось Biker29; 23.11.2008 в 11:42.
Biker29 вне форума Ответить с цитированием
Старый 23.11.2008, 13:29   #4
Summerrain
Пользователь
 
Аватар для Summerrain
 
Регистрация: 16.11.2008
Сообщений: 21
По умолчанию

Есть спец проги по рисованию болк схем по коду программы. Извени только названий их не помню. Точно знаю что в интернете они где-то висят.
Summerrain вне форума Ответить с цитированием
Старый 30.11.2008, 22:57   #5
Александр М
 
Регистрация: 16.11.2008
Сообщений: 4
По умолчанию

Эх Санёк все мы ишем блок схему....
Александр М вне форума Ответить с цитированием
Старый 25.08.2013, 10:50   #6
Ирина Андреевна Пс
Пользователь
 
Регистрация: 05.05.2013
Сообщений: 11
По умолчанию

Arigato, а это разве шейкерная?
Ирина Андреевна Пс вне форума Ответить с цитированием
Старый 25.08.2013, 12:16   #7
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Это линейная
Arigato вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка[Delphi] sergey31 Помощь студентам 13 29.05.2008 23:30
Delphi: Сортировка строк в StringGrid, критерий - элемент ячейки Andris Помощь студентам 9 09.03.2008 23:04