Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.06.2012, 17:54   #1
Сорокина Елена
 
Регистрация: 19.06.2012
Сообщений: 3
По умолчанию Сортировка

Рассмотрим следующий алгоритм сортировки: последовательным просмотром чисел а(1)...а(n) найти наименьшее i такое, что а(i)>а(i+1). Поменять местами а(i) и а(i+1) и возобновить просмотр с начала массива. Когда не удастся найти такое i, массив будет упорядочен. Написать программу, реализующую этот алгоритм если данные представлены в виде массива, файла, списка одной и той же совокупности целых чисел, выбранных случайным образом из некоторого промежутка. Сравнить время работы программ для каждого случая. Результаты отображать на экране.
Сорокина Елена вне форума Ответить с цитированием
Старый 19.06.2012, 18:59   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Странный какой-то алгоритм.
Подозреваю, что его сложность O(N^3).
s-andriano вне форума Ответить с цитированием
Старый 21.06.2012, 10:57   #3
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Я согласен с s-andriano, что алгоритм несколько странный.. Сложность его зависит от неупорядоченности. В самом плохом случае она может оказаться и больше, чем O(N^3), но в среднем наверное будет около O(N^(2.5 или 3)). Но вот зато реализация его изумительно проста!
Для случая массива:
Код:
  i:= 2;
  while i<=m do
    if a[i-1]>a[i] then begin
      b:= a[i-1];
      a[i-1]:= a[i];
      a[i]:= b;
      i:= 2
    end
    else
      inc(i);
Причем, при беглом взгляде может показаться, что сложность O(N)
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 21.06.2012, 19:05   #4
Paster Fob
Форумчанин
 
Аватар для Paster Fob
 
Регистрация: 06.02.2011
Сообщений: 105
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Странный какой-то алгоритм.
Подозреваю, что его сложность O(N^3).
Цитата:
Сообщение от TinMan Посмотреть сообщение
больше, чем O(N^3), но в среднем наверное будет около O(N^(2.5 или 3)).... сложность O(N)
И что это значит?Как это вы измеряете сложность?
Paster Fob вне форума Ответить с цитированием
Старый 21.06.2012, 20:29   #5
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию

Ну насколько понимаю TinMan пытался бегло донести что программа довольно таки линейной сложности себто O(n);

Цитата:
Время работы программы линейно обычно когда каждый элемент входных данных требуется обработать лишь линейное число раз.
из за этого

Код:
 while i<=m do
= O(1), но я думаю что стоит прибавить к этому ещё 1 из за проверки внутри цикла.

Если один цикл вложен в другой и т.д. и циклы зависят от размера одной и той же переменной, то к примеру

Код:
for i:=1 to n ... 
 for j:=1 to n ... 
  for c:=1 to n ...
сложность алгоритма O(N^3);

Но я могу и ошибаться.
Люблю на ты.Я человек простой
Leshii вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Быстрая сортировка(сортировка Хоара). Сортировка фрагмента массива [C++] druger Помощь студентам 0 20.04.2012 15:49
Сортировка Шелла и Шейкер-сортировка AleksandrMakarov Паскаль, Turbo Pascal, PascalABC.NET 11 11.03.2012 12:18
Сортировка массива методами предсортировки и слияния, и пирамидальная сортировка. lenny_24 Помощь студентам 2 17.04.2011 18:57
паскаль,одномерный массив,сортировка вставка,сортировка убывания,от максимального до конца немозг Помощь студентам 11 06.02.2010 21:57
Сортировка файлов в Explorer vs сортировка в Delphi mutabor Общие вопросы Delphi 11 04.09.2009 14:32