Помощь - Поиск - Пользователи - Календарь
Полная версия: Счётчик
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Anastacia Adesso
Приветик, ребята!!
У меня тут появилась небольшая проблемма..
Препод хочет, чтоб в этой программе на экран выводилось количество сравнений в обоих методах (пузырёк и Хоара). Я не врубаюсь,куда это надо поставить? Помогите, пожалуйста..
volvo
(будем считать, что Count - глобальная переменная, в которой будет число сравнений, и Count ПЕРЕД вызовом сортировки присваивается 0):
var
    count: integer;

function isGreater(a, b: integer): boolean;
begin
  inc(count);
  isGreater := (a > b);
end;

{metod puzyrjka}
procedure puzirek(var x:masiv; a:integer);
var
  i, j: integer;

  procedure oborot(var a,b:integer);
  var c: integer;
  begin
    c:=a; a:=b; b:=c;
  end;

begin
  for i:=a-1 downto 1 do
    for j:=1 to i do
      if isGreater(x[j], x[j+1]) then oborot(x[j], x[j+1]);
end; {konec}

{metod Hoara}
procedure hoars(var x:masiv; l, u:integer);
var
  i, j, T: integer;
begin
  while u > l do begin
    i:=l; j:=u; t:=x[l];
    while i<j do begin
      while isGreater(x[j], t) do j:=j-1;
      x[i]:=x[j];
      while(i<j) and (not isGreater(x[i], t)) do i:=i+1; x[j]:=x[i];
    end;

    x[i]:=t;
    hoars(x,l,i-1);
    inc(l);
  end;
end;{konec}

Идея понятна? smile.gif Не забудь обнулять Count перед вызовом КАЖДОЙ сортировки...

Хотя в реализации сортировки Хоара есть сомнения... Загляни в "FAQ: Методы сортировки", проверь, возможно там более быстрая реализация...
Anastacia Adesso
Да. В общем понятен сам процесс..
Спасибо!!!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.