Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Алгоритм быстрой сортировки списка 
:(
    Опции темы
Randomazer
Дата 24.12.2012, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 20.6.2010

Репутация: нет
Всего: нет



Подскажите пожалуйста, если у кого есть, алгоритм или пример быстрой сортировки списка. В списке содержатся символы. Спасибо
PM MAIL   Вверх
Illusion Dolphin
Дата 24.12.2012, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 5
Всего: 63



Сейчас можно так:

Код

uses
   Generics.Collections;

var
  PersonsList : TList<TPerson>;

  PersonsList.Sort(TComparer<TPerson>.Construct(
      function(const Item1,Item2:TPerson): Integer
      begin
         Result := 
          CompareText(Item1.LastName, Item2.LastName);
      end));



--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
Randomazer
Дата 24.12.2012, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 20.6.2010

Репутация: нет
Всего: нет



Извините, мне для Free Pascal Compiler
Дан массив из 20 символов, перевести их в список и отсортировать быстрой сортировкой
Нашел вот это, но не могу найти как применить к своему случаю ссылка

Это сообщение отредактировал(а) Randomazer - 24.12.2012, 17:26
PM MAIL   Вверх
Illusion Dolphin
Дата 24.12.2012, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 5
Всего: 63



Ну тогда читаем про двусвязные и односвязные списки:
http://delphisite.ru/faq/realizatsiya-odno...yaznogo-spiskov
и затем под них преобразуем алгоритм быстрой сортировки:

Код

 procedure QuickSort(var A: array of Integer);
  var
    Lo, Hi, Mid, T: Integer;
  begin
    Lo := Low(A);
    Hi := High(A);
    Mid := A[(Lo + Hi) div 2];
    repeat
      while A[Lo] < Mid do Inc(Lo);
      while A[Hi] > Mid do Dec(Hi);
      if Lo <= Hi then
      begin
        T := A[Lo];
        A[Lo] := A[Hi];
        A[Hi] := T;
        Inc(Lo);
        Dec(Hi);
      end;
    until Lo > Hi;
    if Hi > Low(A) then QuickSort(A);
    if Lo < High(A) then QuickSort(A);
  end;



--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
Randomazer
Дата 24.12.2012, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 20.6.2010

Репутация: нет
Всего: нет



Спасибо большое за пример, вот только как раз и загвоздка, что я с ними разобраться не могу. Пример постараюсь переделать, спасибо
PM MAIL   Вверх
yalex
Дата 25.12.2012, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 28.9.2012
Где: Москва

Репутация: нет
Всего: нет



Пример

Код

procedure QuickSort(l:integer;r:integer);
var
  i,j:integer;
  X:Plist;
begin
   writeln;
   i:=l;
   j:=r;
   x:=GetByid((l+r) div 2);
   repeat
      while (GetById(i)^.sym<x^.sym) do inc(i);
      while (GetById(j)^.sym>x^.sym) do dec(j);
      if (i<=j) then
      begin
        Swap(i,j);
        inc(i);
        dec(j);
      end;
   until (i>j);
   if j>l then QuickSort(l,j);
   if r>i then QuickSort(i,r);
end;

PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0450 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.