Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача на сравнение сортировок
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Akella
Это только первая часть! Это сортировка методом выбора! Не могу посчитать С - число необходимых сравнений
М - число необходимых перестановок
по идее С(n)=n^2 M(n)=n*ln(n), но у меня не получаеться даже приблизительно, куда вставдять счетчик С и М? хелп! заранее спасибо!


program lab_5_11;  
uses crt;    
const    N=50;  
var    massiv:array[1..50] of real;    
i,j,k : integer;    
x : real;    
C,M : integer;    
begin   
  randomize;   
  clrscr;    
    for i:=1 to N do massiv[i]:=random;     
     writeln('Do sortirovki:');     
      for i:=1 to N do write(massiv[i]:1 :3,' ');     
   writeln;    
  for i:=1 to N-1 do begin      k:=i;      
      for j:=i+1 to N do        if massiv[k]>massiv[j] then k:=j;  	
           x:=massiv[k];  	massiv[k]:=massiv[i];  	massiv[i]:=x;    
  end;     
 writeln;     
 writeln('Posle sortirovki pryamim viborom:');   
for i:=1 to N do write(massiv[i]:1 :3,' ');    
end.
Akella
ээээ, не понял? blink.gif
volvo
Самый надежный способ посчитаь число сравнений - это вызывать свою функцию для сравнения и считать число вызовов:
const    N=50;
var
  massiv:array[1 .. N] of real;
  i,j,k : integer;
  x: real;
  C, M: integer;

  function greater(a, b: real): boolean;
  begin
    inc(c);
    greater := a > b;
  end;

begin
  randomize;
  for i:=1 to N do massiv[i] := random;

  writeln('Do sortirovki:');
  for i:=1 to N do write(massiv[i]:1 :3,' ');
  writeln;

  C := 0; M := 0;
  for i:=1 to N-1 do begin
    k:=i;
    for j:=i+1 to N do
      if greater(massiv[k], massiv[j]) then k:=j;
      x:=massiv[k]; massiv[k]:=massiv[i]; massiv[i]:=x; inc(M);
    end;
    writeln;
    writeln('Posle sortirovki pryamim viborom:');
    for i:=1 to N do write(massiv[i]:1 :3,' ');
    writeln;

    writeln('C = ', C, ' M = ', M);
end.


Akella
круто! щас буду доделывать вторую часть! кстати это точно правильно? какие-то числа маленькие получаются!=(

ааааа, я затупил! а как теперь другую сортировку применить к изначальному массиву?
volvo
Ну, чтоб к изначальному - надо этот изначальный массив сохранить, где-то, а потом уже делать с него копии, и сортировать несколькими разными сортировками.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.