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

Вниз

Снова Paskal   Найти похожие ветки 

 
tytus   (2005-11-24 09:48) [0]

Разобрался я с однонаправленным списком в памяти - всем спасибо! Как этот список отсортировать по убыванию (список состоит из записей, одна из них - год (integer)).


 
alex_*** ©   (2005-11-24 10:12) [1]

пузырьком


 
MBo ©   (2005-11-24 13:10) [2]

вставками или слиянием


 
TUser ©   (2005-11-24 14:20) [3]

Цифровой сортировкой. Будет in-place и за линейное время.


 
TUser ©   (2005-11-24 16:02) [4]

Вот тебе пример - и создание и цифровая сортировка
program num;
{$apptype console}
uses SysUtils;

type
PArray = ^TArray;
TArray =
 record
   Value: integer;
   Next: PArray;
 end;

const Len = 10;

procedure Init (var A: PArray);
var t: PArray;
    i: integer;
begin
  Randomize;
  for i:=1 to Len do begin
    New (t);
    t^.Value:=random(25);
    t^.Next:=A;
    A:=t;
    end;
end;

procedure Print (A: PArray);
begin
  while A <> nil do begin
    write (inttostr(A^.Value));
    A:=A^.Next;
    if A <> nil then write (#9);
    end;
  writeln;
end;

procedure Sort (var A: PArray);
var i: integer;
    n: integer;
    t, t1, t2: PArray;
    atail, ttail: PArray;
begin
  for i:=0 to sizeof(integer)*8-1 do begin

    t:=A; t1:=nil;
    atail:=nil; ttail:=nil;
    while t <> nil do begin
      t2:=t^.Next;

      n:=(t^.Value shr i) and 1;
      if n=0 then begin

        if atail = nil then
          A:=t^.Next
          else atail^.Next:=t^.Next;

        if ttail = nil then
          t1:=t
          else ttail^.Next:=t;
        ttail:=t;
        t^.Next:=nil;

        end else atail:=t;

      t:=t2;
      end;

    if atail <> nil then
      atail^.Next:=t1
      else A:=t1;

    end;
end;

procedure Free (var A: PArray);
var t: PArray;
begin
  while A <> nil do begin
    t:=A^.Next;
    Dispose (A);
    A:=t;
    end;
end;

var A: PArray;
begin
 A:=nil;
 Init(A);
 Print(A);
 Sort(A);
 Print(A);
 Free(A);
end.



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

Текущий архив: 2005.12.11;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.044 c
3-1130308266
Goldmund
2005-10-26 10:31
2005.12.11
Работа с БД с применением DLL


9-1121895919
PathFinder
2005-07-21 01:45
2005.12.11
[PathFinder] Нужна функция поиска пути для плоскости


3-1130411344
AlexLines
2005-10-27 15:09
2005.12.11
проблема с escape последовательностью


3-1130396036
oleggar
2005-10-27 10:53
2005.12.11
clipper indexing


1-1131708902
VEZ
2005-11-11 14:35
2005.12.11
Перехват нашатия клавишь





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