Главная страница
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
2-1305264857
pavor
2011-05-13 09:34
2011.08.21
Как корректно узнать, целое число или нет?


2-1305287803
Fr
2011-05-13 15:56
2011.08.21
TDrawGrid и PNG


1-1263292251
Игорь_З
2010-01-12 13:30
2011.08.21
передача параметров из сишной dll


2-1305020114
werewolf2
2011-05-10 13:35
2011.08.21
работа с элементом списка


2-1304704508
Alik
2011-05-06 21:55
2011.08.21
распаковка ZIP архива