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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.09.2018, 05:58   #41
kvitaliy
Участник клуба
 
Регистрация: 17.05.2011
Сообщений: 1,660
По умолчанию

Цитата:
Сообщение от NetSpace Посмотреть сообщение
неповторяющихся элементов, разбросанных случайным образом
Цитата:
Сообщение от NetSpace Посмотреть сообщение
M:=10000; for i:=1 to M do s[i]:=a[i];
Разве тут случайные элементы в массиве?

Когда я тестировал сортировщик eduard-fe
Проц 3.30 GHz. Сортировался файл с 10 000 000 значений типа Int время = 0.819000 сек. Это скорость сортировщика в Винде stable_sort.
Прошу заметить, что это были числа во всём диапазоне: 4 байта и диапазон [-2 147 483 648, +2 147 483 647]

Вот когда ТС сфинкс сможет отсортировать своим алгоритмом файл в 10 000 000 элементов чисел из диапазона -2 147 483 648 до +2 147 483 647 за время 0,8 секунды, вот тогда и вернёмся к этому вопросу.
А картинки любой рисовать может.
kvitaliy вне форума Ответить с цитированием
Старый 12.09.2018, 06:53   #42
сфинкс
Форумчанин
 
Аватар для сфинкс
 
Регистрация: 17.06.2012
Сообщений: 957
По умолчанию

никому не запрещаю не умнеть
не создавая свои алгоритмы сортировки

и не обсуждая ничьи разработки просто повторяю:

преимущество моего алгоритма Русская сортировка половинами:
понятная даже школьникам человеческая сортировка

быстрее в 4 раза ускоряемых сортировок
и то лишь простейшая возможность

и ничуть не мешаю разбирающемуся самостоятельно

ссылка на многие алгоритмы сортировки на многих языках
rosettacode.org/wiki/Category:Sorting_Algorithms
и там легко выйти на алгоритмы для искомых языков

вообще хорошая олимпийская задача по информатике
? смогут ли школьники понять только из визуализации ?
вдруг школьники придумают нечто своё

главное не мешать умнеть
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую

Последний раз редактировалось сфинкс; 12.09.2018 в 12:20.
сфинкс вне форума Ответить с цитированием
Старый 12.09.2018, 07:23   #43
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

хорошо-хорошо. я вчера только начал. на сортировке в миллион элементов программа перестала отвечать. сегодня возьмусь, при возможности, за неё снова.
а вообще, почему бы и в самом деле не расширить диапазон - [-2 147 483 648, +2 147 483 647]? надо будет для чистоты эксперимента такой взять. пущай мой ноут погудит....
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 13.09.2018, 16:04   #44
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
NetSpace
И чего на самой медленном алгоритме эксперименты ставить? Вот кусочек кода для быстрой сортировки без рекурсии, короткие интервалы <26 сортируются вставкой. На AMD 2.7 Ghz 10000000 - 1.3 сек, 100000000 - 15 сек. Экспериментируй и улучшай ) Можно в несколько потоков сделать ) Заодно и с 255-ым днем ))
Код:
type PItem = ^TItem;
     TItem = record
       IndBeg: Integer;
       IndEnd: Integer;
       Next: PItem;
     end;
var m: array of Integer;
    Stack: PItem;

procedure Push(IndBeg,IndEnd: Integer);
var p: PItem;
begin
  New(p);
  p^.IndBeg:=IndBeg;
  p^.IndEnd:=IndEnd;
  p^.Next:=Stack;
  Stack:=p;
end;

procedure Pop(var IndBeg,IndEnd: Integer);
var p: PItem;
begin
  IndBeg:=Stack^.IndBeg;
  IndEnd:=Stack^.IndEnd;
  p:=Stack.Next;
  Dispose(Stack);
  Stack:=p;
end;

procedure Init1(Count: Integer);
var i: Integer;
begin
  SetLength(m,Count);
  for i:=0 to Count-1 do m[i]:=Random(2147483647)-1073741823;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
end;

procedure TForm1.Button1Click(Sender: TObject);
var xIndBeg,xIndEnd,i,j,v,z: Integer;
    c: Cardinal;
begin
  Init1(10000000);

  c:=GetTickCount;

  Stack:=nil;
  Push(Low(m),High(m));
  repeat
    Pop(xIndBeg,xIndEnd);
    if xIndEnd-xIndBeg>24 then begin
      //медиана, тут можно улучшать 
      i:=(xIndEnd-xIndBeg) div 2;
      if m[xIndBeg]>m[xIndEnd] then begin
        if m[i]<m[xIndEnd] then i:=xIndEnd
        else if m[i]>m[xIndBeg] then i:=xIndBeg;
      end
      else begin
        if m[i]<m[xIndBeg] then i:=xIndBeg
        else if m[i]>m[xIndEnd] then i:=xIndEnd;
      end;
      v:=m[xIndEnd];
      m[xIndEnd]:=m[i];
      m[i]:=v;
      //быстрая сортировка
      i:=xIndBeg-1;
      j:=xIndEnd;
      z:=m[xIndEnd];
      repeat
        repeat
          dec(j);
        until (m[j]<=z) or (j=i+1);
        repeat
          inc(i);
        until (m[i]>=z) or (i=j-1);
        v:=m[i];
        m[i]:=m[j];
        m[j]:=v;
      until i>=j;
      m[j]:=m[i];
      m[i]:=m[xIndEnd];
      m[xIndEnd]:=v;
      if i>xIndBeg+1 then Push(xIndBeg,i-1);
      if i<xIndEnd-1 then Push(i+1,xIndEnd);
    end
    else begin
      //сортировка вставками
      for j:=xIndBeg+1 to xIndEnd do begin
        z:=m[j];
        i:=j-1;
        while (i>=xIndBeg) and (m[i]>z) do begin
          m[i+1]:=m[i];
          Dec(i);
        end;
        m[i+1]:=z;
      end;
    end;
  until Stack=nil;

  Memo1.Lines.Add(IntToStr(GetTickCount-c));
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 13.09.2018 в 16:23.
Аватар вне форума Ответить с цитированием
Старый 13.09.2018, 23:49   #45
сфинкс
Форумчанин
 
Аватар для сфинкс
 
Регистрация: 17.06.2012
Сообщений: 957
По умолчанию

пока все вспоминают главную идею:

Русская Сортировка Половинами =
= Человеческая Быстрая Сортировка



дарю архив программы визуализации
с исходниками на известном здешним языке
пока без новейших алгоритмов



и каждый может дополнить программу новейшими алгоритмами
Вложения
Тип файла: rar SortComparisonCodeproject.rar (306.5 Кб, 10 просмотров)
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую

Последний раз редактировалось сфинкс; 14.09.2018 в 09:58.
сфинкс вне форума Ответить с цитированием
Старый 14.09.2018, 11:37   #46
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

ну, вчера добился, что у меня программа 1.000.000 элементов сортирует за 93 секунды, но не делением пополам, а другим образом. это мало или много?
сверху два товарища дали пищу для раздумий - буду пробовать.
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.

Последний раз редактировалось NetSpace; 14.09.2018 в 12:01.
NetSpace вне форума Ответить с цитированием
Старый 14.09.2018, 11:53   #47
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
пока все вспоминают главную идею:

Русская Сортировка Половинами =
= Человеческая Быстрая Сортировка
А кому на компьютере нужна человеческая сортировка? Нужна только быстрая.
Цитата:
МЫ
Это кто?

ЗЫ

Арифметические операции в столбик =
= Человеческие Быстрые Арифметические Операции
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 14.09.2018 в 11:59.
Аватар вне форума Ответить с цитированием
Старый 14.09.2018, 12:12   #48
сфинкс
Форумчанин
 
Аватар для сфинкс
 
Регистрация: 17.06.2012
Сообщений: 957
По умолчанию

НЕправильно заданный вопрос:
"А кому на компьютере нужна человеческая сортировка?"

случайно ну конечно же случайно стёрта главная идея
посему повторяю:

Русская Сортировка Половинами =
= Человеческая Быстрая Сортировка

значит вопрос должен звучать:
"А кому на компьютере нужна сортировка человеческая БЫСТРАЯ ?"

и сейчас все видим: вопрос содержит ответ

и удалив реально лишние слова получаем:
"кому ... нужна сортировка человеческая БЫСТРАЯ ?"

ответ очевиден
и ещё см. выше исходники многих алгоритмов

предвижу: все будут бояться размещать сравнения
в виде подробных таблиц включающих время
и другие параметры типа числа циклов и обменов

бывших медленных алгоритмов сортировки
кои ускорила Русская Сортировка Половинами
в своей простейшей реализации без рекурсии
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую

Последний раз редактировалось сфинкс; 14.09.2018 в 12:34.
сфинкс вне форума Ответить с цитированием
Старый 14.09.2018, 12:16   #49
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Так выше уже разместили...
p51x вне форума Ответить с цитированием
Старый 14.09.2018, 12:45   #50
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
предвижу: все будут бояться размещать сравнения
в виде подробных таблиц включающих время
и другие параметры типа числа циклов и обменов
А что в этом интересного? Ну добавлю в код счетчики, скорость упадет, может в несколько раз. Главное скорость. Другое дело тест на разных данных, особенно на вырожденных случаях или приближающихся к ним. Еще интересно - адаптация к архитектуре
Цитата:
100ооо шт. за 70 секунд
100, допустим с тремя нулями, за 70 сек? Это и даром никому не нужно, хоть Человеческая, хоть Быстрая)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 14.09.2018 в 12:50.
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Быстрая сортировка(сортировка Хоара). Сортировка фрагмента массива [C++] druger Помощь студентам 0 20.04.2012 15:49
Быстрая сортировка(сортировка хаора) с++ LustHunter Помощь студентам 3 07.10.2011 19:37
quickSort, Быстрая сортировка массива kzht91 Помощь студентам 1 17.04.2010 00:30
быстрая сортировка настолько быстрая Serg12 Помощь студентам 8 28.03.2010 21:31