Главная страница
    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.04 c
2-1132942844
The One
2005-11-25 21:20
2005.12.11
EAccessViolation при обращении к полю класса


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


2-1133129941
Eksell
2005-11-28 01:19
2005.12.11
Help


4-1128801147
Orange
2005-10-08 23:52
2005.12.11
функция CreateFile завершается неудачей.


1-1131631572
Суслик
2005-11-10 17:06
2005.12.11
Вопрос про warning





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