Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.061 c
15-1265314234
Kerk
2010-02-04 23:10
2010.08.27
Задачка


15-1272463529
@!!ex
2010-04-28 18:05
2010.08.27
Кем пойти работать?


15-1275942578
Юрий
2010-06-08 00:29
2010.08.27
С днем рождения ! 8 июня 2010 вторник


3-1238562946
TheEd
2009-04-01 09:15
2010.08.27
как вычитать isert ы, произошедшие в триггере одной из таблиц


2-1272519215
wwictor
2010-04-29 09:33
2010.08.27
Как подключится к серверу mySQL и добавить запись?