Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.12.11;
Скачать: [xml.tar.bz2];

Вниз

Снова 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.035 c
10-1109074082
vecna
2005-02-22 15:08
2005.12.11
TCrystalActiveXReportViewer


2-1132488605
alexab
2005-11-20 15:10
2005.12.11
Использование for...to...do


14-1132587549
Yura32
2005-11-21 18:39
2005.12.11
Zvuk


14-1132313939
dr Tr0jan
2005-11-18 14:38
2005.12.11
Новое крепление твоего вентилятора


4-1128481280
Rentgen
2005-10-05 07:01
2005.12.11
Изменить настройки БИОСа компьютера через RS232





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