![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здраствуйте. Сразу к делу.
Типы данных для описания списка: Код:
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;Задача: Нужно сделать процедурку случайной перестановки элементов списка. Рассортировать кароче Выручайте. Или хоть намекните как ато щас кирпичи полезут ![]() |
|
#2
|
||||
|
||||
|
Случайной перестановки? да просто.
Код:
a:=random(N);// N - количество элементов b:=random(N); while b=a do b:=random(N); // чтобы никогда не было a=b Делаем этот код столько раз, сколько хочется. |
|
#3
|
|||
|
|||
|
А если б будет ровняться а с первого захода? Так дело не пойдёт.
|
|
#4
|
|||
|
|||
|
Спасибо за помощь. Я уже нашол решение.
|
|
#5
|
||||
|
||||
|
Sevenfold,
если B=A с самого начала, то пойдет цикл While b=a. Если b<>a - то эти значения A и B нас устраивают и цикл игнорируется. |