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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2012, 14:07   #1
gylayko
Форумчанин
 
Регистрация: 14.09.2011
Сообщений: 203
По умолчанию совместить код

нужно написать программу для сравнения быстродействия видов сортировки массивов. форма будет такая лаб6.png 2 Memo для вывода массивов и 3 Edit для вывода времени.
то есть сначала мы инициализируем массив
Код:
procedure TForm1.Button1Click(Sender: TObject);
var   i:Integer; p:string; a:array[1..100000] of Integer;
begin
Randomize;
  for i:=1 to 100000 do
  begin
    a[i]:=Random(10000);
    p:=IntToStr(a[i]);
    Memo1.Lines.Add(p);
  end;
end;
а потом начинаем сортировать тремя видами. например, берем метод "пузырьком"
Код:
  procedure TForm1.Button2Click(Sender: TObject);
const N=100000; {Количество элементов массива}
  var a: array[1..N] of integer; {массив}
  i: integer; {счётчик для цикла}
  f: boolean; {Признак наличия неупорядоченных пар}
  c: integer; {Переменная для промежуточного хранения}
begin
repeat
  f:=false; {Пока неупорядоченных пар не было}
  for i:=1 to N-1 do  {Просматриваем все пары рядом стоящих элементов}
  begin
    if a[i]>a[i+1] then {Если пара стоит в неправильном порядке}
    begin
      f:=true; {Есть неупорядоченная пара}
      c:=a[i];a[i]:=a[i+1];a[i+1]:=c; {Меняем местами элементы массива}
    end;
  end;
until not f; {Ждём, пока не исчезнут все неупорядоченные пары}
потом метод простого выбора
Код:
  procedure TForm1.Button3Click(Sender: TObject);
const N=100000; {Количество элементов массива}
  var a: array[1..N] of integer; {массив}
  i,j: integer; {счётчики для цикла}
  c:   integer; {Переменная для промежуточного хранения}
  c2:  integer; {Переменная для промежуточного хранения}
begin
for i:=1 to N-1 do begin 
  {цикл по первому обрабатываемому элементу массива}
  c2:=i; {индекс предполагаемого минимального элемента}
  for j:=i+1 to N do 
    {поиск минимального элемента}
    if a[c2]>a[j] then c2:=j; {если в c2 индекс не минимального элемента, 
    			то в c2 записывается индекс меньшего элемента}
    c:=a[i];a[i]:=a[c2];a[c2]:=c; {Меняем местами элемент массива}
end;
и пирамидальную сортировку
Код:
procedure TForm1.Button4Click(Sender: TObject);
const N=100000; {Количество элементов массива}
  var a: array[1..N] of integer; {массив}
  i,j,k,x:integer;
begin
for i := (N div 2) downto 1 do
begin
  j := i;
 while j <= (N div 2) do
 begin
    k := 2 * j;
   if (k + 1 <= N) and (a[k] < a[k + 1]) then
      k := k + 1;
   if a[k] > a[j] then
   begin
      x := a[j];
      a[j] := a[k];
      a[k] := x;
      j := k
   end
   else
     Break
 end
end;
с временем понятно, до цикла
Код:
time1=GetTimeTick
и после цикла
Код:
time2=GetTimeTick;
time=time2-time1;
Edit1.Text:=IntTiStr(time);
но во-первых, непонятно, как выводить в Memo2, если взять р типа string и p:=IntToStr(a[i]) в цикле, после чего выводить как Memo1.Lines.Add(p);
делают так, возникает вот это ах.jpg и я даже не знаю, что там дальше делать! помогите совместить отдельные куски кода!
gylayko вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Надо совместить в 1 программу NomeL Помощь студентам 1 09.05.2012 17:20
Совместить 2 запроса stck SQL, базы данных 10 18.05.2011 13:09
совместить 2 макроса Kraimon Microsoft Office Excel 2 13.02.2011 17:16
Совместить с++ и delphi Яр|/||< (^_^) Свободное общение 20 25.03.2010 13:32
Windows XP совместить с 98? Pavluha Windows 3 20.11.2008 15:01