![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перемешать массив [D6, WinXP]
Vladislav © (2002-07-25 12:12:00)Как быстрее всего перемешать массив?
RV (2002-07-25 13:22:00) [1]можно до половины цикл сделать
брать рандомом елемент и менять с соответствующим из второй половины
Vladislav (2002-07-25 13:14:00) [2]
for i := 1 to High( Numbers ) do Numbers[ i ] := i;
for i := High( Numbers ) downto 1 do begin
R := Random( i );
S := Numbers[R];
Numbers[R] := Numbers[i];
Numbers[i] := S;
end;
RV (2002-07-25 13:05:00) [3]массив исходный (неперемешанный?)
a[1]=1
a[2]=2
..
a[n]=n
массив ( перемешанный?)
a[1]=n
a[2]=2
..
a[n]=1
с какого момента массив считается перемешанным?
-----
один волос - не борода
2 - не борода
3 - не борода
...
100000 - борода
сколько волос уже борода?
eSKey (2002-07-25 12:44:00) [4]А поиском по форуму воспользоваться трудно? Эта тема уже не первый раз обсуждается и имеет простейшее решение.
Viewer (2002-07-25 12:39:00) [5]Для перемешиванния в случайном порядке использовать случайный подход.
Случайно выбирать i,j из диапазона и обменивать значения.
Для "неслучайного" подхода взять два близких простых числа A,B и с их шагом циклически пробежаться несколько раз по массиву обменивая ячейки с индексами кратными этим числам.
RV (2002-07-25 12:30:00) [6]смотря какой массив
смотря что понимать под перемешанным/неперемешанным массивом