Главная страница
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.47 MB
Время: 0.04 c
1-1131716418
pasergey
2005-11-11 16:40
2005.12.11
Hужен кряк или кейген к EPocalipse VssConneXion 3.1 build 47


2-1132703705
Дева
2005-11-23 02:55
2005.12.11
Query свойство Active


14-1132251501
leonidus
2005-11-17 21:18
2005.12.11
Как подсчитать кол-во обращений к сканеру


2-1132918235
Quadro
2005-11-25 14:30
2005.12.11
Странная ошибка


1-1131979438
*Beginner*
2005-11-14 17:43
2005.12.11
Перетаскивание из TShellTreeV iew