Главная страница
    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.058 c
15-1266617670
Германн
2010-02-20 01:14
2010.08.27
Слэнг, блин. :)


15-1263939469
Маша
2010-01-20 01:17
2010.08.27
Странная задачка


15-1270645124
Andrey O.
2010-04-07 16:58
2010.08.27
Небольшая рекламация для пользователей Firefox


15-1264411731
KilkennyCat
2010-01-25 12:28
2010.08.27
Нет ли у кого в Питере ненужного сломанного принтера


15-1266044160
AlexDan
2010-02-13 09:56
2010.08.27
Спрятать php файл





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