Главная страница
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.01 c
13-1126851536
Антон773
2005-09-16 10:18
2011.08.21
перенос кода с win32 на .net


3-1263036650
Soi
2010-01-09 14:30
2011.08.21
SQL - функция получения длинны запрашиваемого поля


15-1303991530
oxffff
2011-04-28 15:52
2011.08.21
На какую ЗП можно расчитывать в Москве и Питере?


15-1304182636
И. Павел
2011-04-30 20:57
2011.08.21
Связь между "логическим" и "физическим" значением сигнала


4-1249641864
Гость
2009-08-07 14:44
2011.08.21
Получение текста ошибки при вызове LoadLibrary в сервисе