Главная страница
    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.45 MB
Время: 0.087 c
3-1221580413
wipr
2008-09-16 19:53
2010.08.27
не удается открыть таблицу XML


2-1266417791
QAZ
2010-02-17 17:43
2010.08.27
string freemem


2-1264931372
duMka
2010-01-31 12:49
2010.08.27
Как получить кусок картинки из чужого приложения?


15-1264203683
Petr V. Abramov
2010-01-23 02:41
2010.08.27
пятничный паровоз :)


2-1271699684
SyrBrandon
2010-04-19 21:54
2010.08.27
Как сделать чтобы в объекте TEdit вводились тока латинские буквы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский