Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача на сравнение сортировок
Форум «Всё о Паскале» > 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©;
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
Ну, чтоб к изначальному - надо этот изначальный массив сохранить, где-то, а потом уже делать с него копии, и сортировать несколькими разными сортировками.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.