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

Вниз

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

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

Наверх





Память: 0.45 MB
Время: 0.003 c
15-1303981198
MDFE
2011-04-28 12:59
2011.08.21
Розовый слоник


1-1263547969
parasolka
2010-01-15 12:32
2011.08.21
Подписи в TChart.


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


1-1223610051
inferno
2008-10-10 07:40
2011.08.21
Прокрутка колесиком в ScrollBox


15-1303982784
Дмитрий Тимохов
2011-04-28 13:26
2011.08.21
Как отключить в BPL добавление VersionInfo?





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