Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Сортировка массива (http://www.flasher.ru/forum/showthread.php?t=40494)

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: Круто! :) как раз то, что и требовалось. Спасибо


Часовой пояс GMT +4, время: 15:28.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.