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

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

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2009, 08:12   #11
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Blade Посмотреть сообщение
Это метод "Пузырька", считается одним из самых медленных
Применительно к числам. Вообще скорость сортировки напрямую зависит не только от метода, но и сортируемых данных.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 16.04.2009, 08:13   #12
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от Blade Посмотреть сообщение
Это метод "Пузырька", считается одним из самых медленных
может поспорим? что это не метод пузырька
в методе пузырька меняются местами соседние элементы до тех пор, пока весь массив не отсортируется
метод пузырька
Код:
repeat
 Flag := False;
 for i := 0 to n - 1 do
  if Arr [i] > Arr [i + 1] then begin 
   Temp := Arr [i]; 
    Arr [i] := Arr [i + 1];
    Arr [i + 1] := Temp; 
    Flag := True; 
   end; 
until Flag = False;

Последний раз редактировалось rpy3uH; 16.04.2009 в 08:20.
rpy3uH вне форума Ответить с цитированием
Старый 16.04.2009, 09:56   #13
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

Самый быстрый метод сортировки - линейная сортировка. Применительно к числам она очень эффективна, но требует давольно много ресурсов памяти.
При небольшой адаптации она применима и к строковым данным.
Arigato вне форума Ответить с цитированием
Старый 16.04.2009, 16:54   #14
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от rpy3uH Посмотреть сообщение
может поспорим? что это не метод пузырька
Согласен, не метод пузырька
Зачем сразу спорить?
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 16.04.2009, 17:25   #15
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Когда-то писала программу сравнения сортировок.
Массив заполнен числами от 0 до 999. Элементов в массиве - 500 000. Методы сортировки: пузырьком, вставками, выбором, рекурсивная(быстрая). По времени победила рекурсивная.

Может, и вам сравнить известные сортировки и опытным путем проверить, какая из них подходит именно к вашим данным.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 16.04.2009, 19:35   #16
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от ACE Valery Посмотреть сообщение
Когда-то писала программу сравнения сортировок.
я тоже писал, лабораторная была такая в институте по исследованию методов сортировок


Цитата:
Сообщение от ACE Valery Посмотреть сообщение
Методы сортировки: пузырьком, вставками, выбором, рекурсивная(быстрая). По времени победила рекурсивная.
рекурсивная сортировка здесь лишняя, она не относится к простым методам и она не всегда подходит, так как всегда есть вероятность (хоть очень малая) что будет переполнение. И я не отрицаю что рекурсивная сортировка быстрая, я говорю: зачем извращаться, если можно сделать намного проще?
rpy3uH вне форума Ответить с цитированием
Старый 16.04.2009, 20:23   #17
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Можно еще сортировку шелла замутить
pu4koff вне форума Ответить с цитированием
Старый 16.04.2009, 20:25   #18
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

Цитата:
Когда-то писала программу сравнения сортировок.
Массив заполнен числами от 0 до 999. Элементов в массиве - 500 000. Методы сортировки: пузырьком, вставками, выбором, рекурсивная(быстрая). По времени победила рекурсивная.
Решил замерить, сколько потребуется времени линейной сортировки для того, что бы отсортировать такой массив. Вот, набросал примерчик:
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  Windows;

const N = 500000;

var Mas: array[1..N] of Word;
    Data: array[0..999] of Integer;
    I: Integer;
    T: Cardinal;

procedure Sort1;
// Медленная сортировка:
var I, J: Integer;
    Tmp: Word;
begin
  for I := 1 to N - 1 do
    for J := I + 1 to N do
      if Mas[I] > Mas[J] then
      begin
        Tmp := Mas[I];
        Mas[I] := Mas[J];
        Mas[J] := Tmp;
      end; {if}
end; {proc Sort1}

procedure Sort2;
// Линейная сортировка массива:
var I, J, Idx: Integer;
begin
  FillChar (Data, SizeOf (Data), 0);
  for I := 1 to N do
    Inc (Data[Mas[I]]);
  Idx := 1;
  for I := 0 to 999 do
    for J := 1 to Data[I] do
    begin
      Mas[Idx] := I;
      Inc (Idx);
    end; {for}
end; {proc Sort2}

begin
  // НАЧАЛО: Заполняем массив
  Randomize;
  for I := 1 to N do
    Mas[I] := Random (1000);
  // КОНЕЦ: Заполняем массив
  T := GetTickCount;
  Sort2;
  WriteLn ('Time result (ms) = ', GetTickCount - T);
  ReadLn;
  for I := 1 to N do
    Write (Mas[I], ' ');
  ReadLn;
end.
Процедура Sort2 - линейная сортировка, Sort1 - для сравнения другой метод. Линейная сортировка справилась с данным массивом за 0 мс (мгновенно), Sort1 не хватило терпения дождаться окончания процесса.
Arigato вне форума Ответить с цитированием
Старый 16.04.2009, 20:32   #19
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Как уже было сказано ранее все зависит от исходных данных! А вообще и метод пузырька можно подогнать под свои цели, например вставить логическую переменку, и если на этой интерации не было перестановок-выйти из цикла, и тд!
Levsha100 вне форума Ответить с цитированием
Старый 17.04.2009, 09:00   #20
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Полностью согласен. Обычные выкладки из учебников. Все дружно забыли что человека интереует опыт сортировки строковых данных, а не чисел. Данные по сортировке чисел, ИМХО, топикстартеру известны.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка многомерного массива на тип сортировки его строк. FatCat Помощь студентам 4 20.12.2008 21:21
Из сортировки массива в сортировку матрици XXXimpulsXXX Помощь студентам 2 12.10.2008 15:11
Какой самый быстрый метод заполнения массива, например двухмерного? SkAndrew Общие вопросы Delphi 11 29.05.2008 13:23
ВИд benjaminfran Софт 2 22.02.2008 08:55
Предложите самый быстрый алгоритм! Gambler Общие вопросы Delphi 6 26.12.2006 22:44