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

Вниз

Динамический двунаправленный список (Рандом)   Найти похожие ветки 

 
Sevenfold ©   (2011-05-11 03:13) [0]

Здраствуйте. Сразу к делу.

Типы данных для описания списка:

TData = Integer;
 (* Тип, описывающий элемент списка. *)
 TPElem = ^TElem;

 TElem = record
   Data: TData;
   PNext: TPElem;
   PPrev: TPElem;
 end;

 (* Тип, описывающий список. *)
 TList = record
   PFirst: TPElem;
   PLast: TPElem;
 end;


Процедура пузырчатой сортировки:

procedure SortBubbleDesc(const aList: TList);
var
 P1, P2, P: TPElem;
 Data: TData;
 F: Boolean;
begin
 if aList.PFirst = aList.PLast then
   Exit;

 P := aList.PLast;
 repeat
   F := False;

   P2 := aList.PFirst;
   repeat
     P1 := P2;
     P2 := P1^.PNext;
     if P1^.Data < P2^.Data then
     begin
       Data := P1^.Data;
       P1^.Data := P2^.Data;
       P2.Data := Data;
       F := True;
     end;
   until P2 = P;

   P := P^.PPrev;
 until not F;
end;


Задача:

Нужно сделать процедурку случайной перестановки элементов списка. Рассортировать кароче :p
Выручайте. Или хоть намекните как ато щас кирпичи полезут :o


 
Eraser ©   (2011-05-11 04:36) [1]

randomrange + f1


 
MBo ©   (2011-05-11 07:38) [2]

N = длине списка
Пока N ненулевое, делать:
Встать в начало.
Перейти на Random(N) элемент.
Извлечь его и переставить в конец списка.
Уменьшить N.


 
Dennis I. Komarov ©   (2011-05-11 09:29) [3]

Удалено модератором


 
icWasya ©   (2011-05-11 10:36) [4]

Покритикую.
Вся идея списков - что при вставке/удалении/перестановке элементов меняют не поле Data, а поля PNext/PPrev.
И если это учебное задание, то Вам скорее всего поставят незачёт за вышеприведённый код.
Поэтому, прежде чем браться за сортировку - Вам нужно написать процедуры добавления/удаления/перестановк элементов.


 
Sevenfold ©   (2011-05-12 08:28) [5]

Удалено модератором
Примечание: Умники сюда не ходят, а прямо идут в помойку



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

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

Наверх




Память: 0.48 MB
Время: 0.009 c
15-1303631548
arevo
2011-04-24 11:52
2011.08.21
InstallShield


15-1304271691
Сергей
2011-05-01 21:41
2011.08.21
Форумы по вебдизайну и вебпрограммированию


15-1303976611
stas
2011-04-28 11:43
2011.08.21
Изменить серийный номер в ISO образе


15-1304504124
Иксик
2011-05-04 14:15
2011.08.21
Сегодня я побывал в СССР by Yashar Farajov on Monday, May 2, 2011


2-1304955708
Leon-Z
2011-05-09 19:41
2011.08.21
Глюк в Delphi 7.