Форум: "Начинающим";
Текущий архив: 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.45 MB
Время: 0.117 c