IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Задача на сравнение сортировок, Проверить!
Akella
сообщение 2.03.2009 13:55
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 58
Пол: Мужской

Репутация: -  0  +


Это только первая часть! Это сортировка методом выбора! Не могу посчитать С - число необходимых сравнений
М - число необходимых перестановок
по идее С(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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Akella
сообщение 2.03.2009 14:30
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 58
Пол: Мужской

Репутация: -  0  +


ээээ, не понял? blink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 2.03.2009 14:45
Сообщение #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
сообщение 2.03.2009 15:17
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 58
Пол: Мужской

Репутация: -  0  +


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

ааааа, я затупил! а как теперь другую сортировку применить к изначальному массиву?

Сообщение отредактировано: Akella - 2.03.2009 15:28
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 2.03.2009 15:47
Сообщение #5


Гость






Ну, чтоб к изначальному - надо этот изначальный массив сохранить, где-то, а потом уже делать с него копии, и сортировать несколькими разными сортировками.
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 26.07.2025 7:16
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"