PDA

Просмотр полной версии : Сортировка массива


Rotator
04.12.2002, 00:29
Вопрос к программерам: каким образом можно отсортировать элементы массива случайным образом?
Попробовал в цикле следующее:
text=mass[Math.floor(Math.random()*mass.length)];
Работает, но при этом некоторые элементы при выводе повторяются, что в принципе нежелательно. Есть смутное подозрение, что нужно здесь заюзать метод sort(), только вот подстановка в него math.random ничего не дает. В общем подскажите, как можно реализовать сабж.

Alexey (G-fi)
04.12.2002, 00:47
Добренький вечерочек...

Доб...

Alexey (G-fi)
04.12.2002, 00:50
Добренький вечерочек...


тьфу, блин, радио чип в голове барахлит...

Щас...
:rolleyes:

Секундочку :rolleyes:

«.. раз... раз» О – нормалёк :D


Слушай, Rotator , а может тебе проще случайно выбирать элементы из массива, а не мучать ЕГО. :rolleyes:

Гм?

Nox Noctis
04.12.2002, 02:04
randomize = function (source) {
var result = [];
var heap = source.concat();
for (var i = 0; i<source.length; i++) {
var rnd = random(heap.length);
result.push(heap[rnd]);
heap.splice(rnd, 1);
}
return result;
};
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
b = randomize(a);
trace(a);
trace(b);
пояснение:
heap = source.concat();
это всего лишь способ скопировать исходный массив, чтобы не модифицировать его при сортировке...
(конкат присоединяет к исходному массиву пустое место (потому что аргумент не указан) и возвращает новый массив (получается точная копия исходного =) ))

Rotator
04.12.2002, 03:46
2Nox Noctis: Круто! :) как раз то, что и требовалось. Спасибо