Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Перемешать массив [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]

смотря какой массив
смотря что понимать под перемешанным/неперемешанным массивом


Наверх

Титульная страница Поиск, карта сайта Написать письмо