![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Akella |
![]() ![]()
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 58 Пол: Мужской Репутация: ![]() ![]() ![]() |
Это только первая часть! Это сортировка методом выбора! Не могу посчитать С - число необходимых сравнений
М - число необходимых перестановок по идее С(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 |
![]()
Сообщение
#2
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 58 Пол: Мужской Репутация: ![]() ![]() ![]() |
ээээ, не понял?
![]() |
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
Самый надежный способ посчитаь число сравнений - это вызывать свою функцию для сравнения и считать число вызовов:
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 |
![]()
Сообщение
#4
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 58 Пол: Мужской Репутация: ![]() ![]() ![]() |
круто! щас буду доделывать вторую часть! кстати это точно правильно? какие-то числа маленькие получаются!=(
ааааа, я затупил! а как теперь другую сортировку применить к изначальному массиву? Сообщение отредактировано: Akella - 2.03.2009 15:28 |
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Ну, чтоб к изначальному - надо этот изначальный массив сохранить, где-то, а потом уже делать с него копии, и сортировать несколькими разными сортировками.
|
![]() ![]() |
![]() |
Текстовая версия | 26.07.2025 7:16 |