Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

Поразрядная сортировка списка слов   Найти похожие ветки 

 
pavelkq   (2010-02-12 15:49) [0]

Прочитал замечательную статью про поразрядную сортировку http://www.delphimaster.ru/articles/dsort/index.html. Решил на базе этого алгоритма сделать функцию сортировки списка слов типа TStringList, где в качестве целого числа используется ASCII код символов. По прежнему опыту знаю, что обычно 4 символа хватает для качественной сортировки слов в алфавитном порядке. Итого, задача сводится к тому, чтобы 4 раза пройтись по всему списку слов, анализируя ASCII код символов от 4-го к первому. В уме все это кажется просто, а в реализации как-то не выходит.
Объявил тип:
type
 TPMySort=^TMySort; // указатель на тип TMySort
 TMySort = record
   my_word:string[20]; // само слово
   next: TPMySort; // следующий элемент списка
 end;
и объявил переменную
var
head: TPMySort; // начало (голова) списка
Далее пишу следующее:
function SortArray (InArr:TStringList):TStringList;
 var
 Bucket: Array[48..123] of TPMySort;// ASCII коды символов лежат в этом диапазоне
 i, j, k: integer;// i,j - для цикла; k - для наглядности
 ch: char;
 s: string;
begin
// перегон в список и сортировка
 For j:=4 downto 1 do //вроде бы надо сделать 4 цикла по всему списку
 begin
   For i:=0 to InArr.Count-1 do //цикл по всему списку слов
   begin
     s:=InArr[i]; //получаю i-е слово
     ch:=s[j]; //и j-й символ
     k:=ord(ch); // а так же код j-го символа

    //тут должно быть еще что-то

   end; //For i
 end; //For j

// перегон обратно в TStringList
 result:=TStringList.Create;
 For i:=48 to 123 do
 begin
   while Bucket[i].next <> NIL do
     begin
       s:="";// непонятно, как тут писать
       Result.Add(s);
     end; //while
 end; //For i

end;

Помогите, пожалуйста, закончить мысль, а так же оптимизировать код. Подозреваю, что можно не париться с какими-то самодельными списками, а использовать тот же самый массив из 4-х TStringList-ов.


 
Anatoly Podgoretsky ©   (2010-02-12 16:09) [1]

TStringList сам в состоянии сортировать.


 
Демо ©   (2010-02-12 17:00) [2]

Почитай здесь - http://forum.sources.ru/index.php?showtopic=293015&hl=



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.062 c
4-1231416440
kolj
2009-01-08 15:07
2010.08.27
Стиль Windows Xp для нарисованой кнопки на Caption bar ?


15-1266509022
Копир
2010-02-18 19:03
2010.08.27
Таки они были?!


2-1272631952
HF-Trade
2010-04-30 16:52
2010.08.27
Динамический TTimer - как узнать Tag таймера


2-1266903094
crank
2010-02-23 08:31
2010.08.27
Нижний индекс в RichEdit


2-1270538489
istok
2010-04-06 11:21
2010.08.27
TTimer в Delphi2010





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский