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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2016, 22:35   #1
юля123321
Пользователь
 
Регистрация: 28.11.2016
Сообщений: 15
По умолчанию Почему сортировки массива не работают?

На всякий случай задание: Разработать диалоговую программную систему, позволяющую оценить время выполнения различных алгоритмов упорядочения числовых массивов. Алгоритмы сортировки оформить в виде подпрограмм.
Код:
program sravnenie;
const
  Nmax = 10000;
  Np = 10;
  Smax = 6;

type
  Tvector = array[1..Nmax] of word;
  Tstring = array[1..Smax] of string;
  Tindex = 1..Nmax;

const
  masstr: TString = ('input', 'bubble', 'insert', 'choice', 'output', 'exit');


function menu(s: TString; ns: word): word;
var
  i: word;
  k: word;
begin
  for i := 1 to ns do
    writeln(s[i]);
  writeln('Введите номер пункта');
  readln(k);
  result := k;
end;







procedure input(var a: Tvector; n: word);
var
  i: word;
  c, d, e: Tvector;
begin
  randomize;
  writeln('Введите количество элементов массива');
  readln(n);
  for i := 1 to n do
    a[i] := random(10000);
  writeln('unsort.arr.');
  for i := 1 to Np do
    write(a[i]:8);
  writeln;
  c[i] := a[i];
  d[i] := a[i];
  e[i] := a[i];
end;


procedure bubble(var c: Tvector; n: word);
var
  z: Tvector;
  flag: boolean;
  i, b: word;
  t1, t2, time_bubble: real;
begin
  t1 := Milliseconds;
  flag := true;
  while flag = true do
  begin
  flag := false;
    for i := 1 to n - 1 do
    begin
      if c[i] > c[i + 1] then
      begin
        flag := true;
        b := c[i];
        c[i] := c[i + 1];
        c[i + 1] := b;
        
      end;
      end;

   
    end;
    t2 := Milliseconds;
    time_bubble := t2 - t1;
    
    writeln('После сортировки пузырьком: ');
    
    for i := 1 to Np do
      write(c[i], ' ');
    writeln;    
    writeln('Время сортировки пузырьком: ', time_bubble, 'ms');
    z[i] := c[i];
  end;



procedure insert(var d: Tvector; n: word);
var
  i, R, k: word;
  z: Tvector;
  t3, t4, time_insert: real;
begin
  t3 := Milliseconds;
  for i := 2 to n do
    if d[i - 1] > d[i] then
    begin
      R := d[i];
      k := k - 1;
      while (k > 0) and (d[k] > R) do
      begin
        d[k + 1] := d[k];
        k := k - 1;
      end;
      d[k + 1] := R;
      t4 := Milliseconds;
      time_insert := t4 - t3;
    end;
  z[i] := d[i];
  writeln('После сортировки вставками: ');
  
  for i := 1 to Np do
    write(z[i], ' ');
  writeln; 
  writeln('Время сортировки вставками: ', time_insert, 'ms');
  
end;



procedure choice(var e: Tvector; n: word);
var
  k, j, index: word;
  min, i: word;
  z: Tvector;
  t5, t6, time_choice: real;
begin
  t5 := Milliseconds;
  for k := 1 to n - 1 do
  begin
    min := e[k];
    index := k;
    for j := k + 1 to n do
      if e[j] < min then
      begin
        min := e[j];
        index := j;
      end;
    e[index] := e[k];
    e[k] := min;
    t6 := Milliseconds;
    time_choice := t6 - t5;
  end;
  z[i] := e[i];
  writeln('После сортировки выбором: ');
  
  for i := 1 to Np do
    write(z[i], ' ');
  writeln; 
  writeln('Время сортироки выбором: ', time_choice, 'ms');
  
end;


procedure output(var a, z: Tvector; Table: word);
var
  i: word;
  time_choice, time_insert, time_bubble: real;
begin
  writeln('unsort_arr:');
  for i := 1 to Np do
    write(a[i]:8);
  writeln;
  
  begin
    writeln(z);
    writeln('Тип сортировки', '          ', 'Время работы');
    writeln(z, '           ', (time_bubble):10,  'ms');
    writeln(z, '           ', (time_insert):10,  'ms');
    writeln(z, '           ', (time_choice):10,  'ms');
  end;
  
  
  begin
    write('sort_arr:');
    for i := 1 to Np do
      write(z[i]:8);
    writeln; 
  end;
end;



var
  k, n, Table: word;
  a, c, d, e, z: TVector;

begin
  
  repeat
    k := menu(masstr, Smax);
    case k of
      1: input(a, n);
      2: bubble(c, n);
      3: insert(d, n);
      4: choice(e, n);
      5: output(a, z, Table);
      6: exit;
    end;
  until k = Smax;
end.

Последний раз редактировалось юля123321; 05.12.2016 в 22:20.
юля123321 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему в ассемблерной вставке не работают метки mseshuk Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 18.10.2015 15:06
Почему не работают макросы на защищенном листе Робин Microsoft Office Excel 6 06.07.2012 13:44
2 задачи на массивы. почему не работают ??? (((( ProgFrog Microsoft Office Excel 3 21.05.2012 21:07
Почему так работают функции в javascript Arassir JavaScript, Ajax 3 04.02.2011 11:24
Почему не работают сессии? Яр|/||< (^_^) PHP 6 14.07.2010 12:36