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

Вниз

Сортировка   Найти похожие ветки 

 
Region ©   (2003-06-29 21:41) [0]

Слушайте, мастаки. Клинит меня чето седня. Ну напишите мне просто алгоритм сортировки m: array of какой_то_тип в случайном порядке.
Плз.


 
Palladin ©   (2003-06-29 21:45) [1]

ветка: http://delphimaster.net/view/1-1056891773/
пост: Palladin © (29.06.03 17:37)
цикл номер 2


 
Region ©   (2003-06-29 21:52) [2]

Да... Но там, насколько я понял, для числовых массивов. А мне надо для произвольного типа. Вот есть массив. Требуется расставить элементы в случайном порядке. просьба написать алгоритм.


 
ss300 ©   (2003-06-30 00:05) [3]

не лучший вариант.. но за 5 мин. лучшего алгоритма не придумаешь :)
это сортировка по возрастанию.. а по убыван.. сам сделаешь.
for j :=1 to 10 do
begin
for i:=1 to 10 do
begin
if a[i]>a[i+1] then begin t:=a[i]; a[i]:=a[i+1];ai+1]:=t;
end;
end;
end;




 
Mihey ©   (2003-06-30 00:21) [4]

Можно использовать способ Palladin"а или мою процедурку:

procedure FillArray(var A: array of Integer);
var
I, S, R: Integer;
begin
for I := 0 to High(A) do A[I] := I;
for i := High(A) downto 0 do begin
R := Random(I);
S := A[R]; A[R] := A[I]; A[I] := S;
end;
end;

Так ты заполнишь числовой массив неповторяющимися значениями. Теперь представь, что эти значения - это индексы массива, т.е. элемент a[1] содержит 5, а значит первый элемент массива с твоими данными нужно поместить на место пятого элемента (приёдтся для перемешки ещё один массив делать) и т.д..


 
ss300 ©   (2003-06-30 00:23) [5]

я не понял, Регион тебе что надо? сортировка или массив неповторяющихся случайных чисел? :)


 
Makhanev A.S. ©   (2003-06-30 00:32) [6]

В D6 точно в Demos примерчик есть, там для иллюстрации потоков 3 метода сортировки показаны...
Папка "D6\Demos\Threads"


 
Region ©   (2003-06-30 17:14) [7]

Есть массив совершенно произвольного типа элементов. Мне надо, чтобы в этом массиве все элементы встали не так, как они стоят сейчас, а в случайном порядке. Может мне кто-нибудь нормальный алгоритм написать, чтобы вставил в программу - и работало?


 
[NIKEL] ©   (2003-06-30 17:20) [8]

массив не то и массив, что бы хранить данные ОДНОГО типа

у тебя что, структурки динамические в массиве хранятся(указатели точнее) ?

использую лучше TList

->чтобы вставил в программу - и работало?

я б вставил, млин...


 
Poirot ©   (2003-06-30 18:41) [9]


> Region ©

Это вам помоему что-то очень интересное хочется?!?!?!?!?!?!!?!?!?
ну я могу конечно что-то вам предложить, но тут придётся думать, а вам похоже это не хочется делать... так вот - вы бы вопрос сформулировали, так как надо... сортировка - это упорядочивание элементов, а вам надо просто сделать генератор псевдослучайной последовательносли, причём желательно с периодом = размеру вашего массива и при каждом значении этой выборки добавлять из исходного массива по выбранному числу элемент, в позицию номера элемента выборки...
типа что-то этого!!!


 
Mihey ©   (2003-06-30 18:56) [10]


const N = 10;

var a0: array [1..N] of TMyType;
a1: array [1..N] of TMyType;
n0: array [1..N] of Integer;
i: Integer;

procedure FillArray(var A: array of Integer);
var
I, S, R: Integer;
begin
for I := 0 to High(A) do A[I] := I;
for i := High(A) downto 0 do begin
R := Random(I);
S := A[R]; A[R] := A[I]; A[I] := S;
end;
end;

begin
... // Заполняется a0, свои действия...

// Теперь будем мешать
FillArray(n0);
For i := 0 to N do
begin
a1[n[i]] := a0[i];
end;

... // Всё, массив a1 заполнен в случайно мопрядке элементами a0
end;


 
Region ©   (2003-06-30 19:16) [11]

Спасибо.



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

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

Наверх




Память: 0.49 MB
Время: 0.027 c
14-55784
Ajax
2003-06-29 20:29
2003.07.17
Большая просьба


14-55828
Delphi 5.01
2003-06-28 09:14
2003.07.17
Word Document


14-55813
Мазут Береговой
2003-07-01 03:54
2003.07.17
Кажется у меня атипичная пневмония (SARS).


3-55439
V-A-V
2003-06-24 14:12
2003.07.17
Progress для AdoQuery


1-55529
Макс
2003-07-05 09:28
2003.07.17
Курсор