Если вам нужна супербыстрая сортировка, то, возможно, стоит вообще не использовать массив, а вместо этого использовать связанный список. Есть разные преимущества для каждого. Прежде всего, при использовании связанного списка доступ к индексу происходит медленно, хотя итерация по списку происходит быстро, а связанные списки не являются родными для AS3, поэтому вам придется свернуть свой собственный.
С другой стороны, вы можете использовать код Polygonal Labs: http://lab.polygonal.de/as3ds/.
Сортировка очень, очень быстрая для почти отсортированных данных со связанным списком, как обсуждается в этой статье: http://lab.polygonal.de/2007/11/26/data-structures-more-on-linked-lists/.
Это решение дает вам гораздо больше работы, но в конечном итоге также даст вам большую скорость сортировки.
Надеюсь, это поможет.
- дополнительно -
Я заметил ваш вопрос в комментариях к другому ответу о том, что "Один вопрос, однако, остается без ответа - как выполнять жадные вычисления во Flash, не вешая его?"
Для этого, по сути, ответ состоит в том, чтобы разбить ваши вычисления на несколько кадров, что-то вроде этого:
public function sort():void
{
addEventListener(Event.ENTER_FRAME, iterateSort);
}
private function iterateSort():void
{
var time:int = getTimer() + TARGET_MILLISECONDS_PER_FRAME;
var isFinished:Boolean = false;
while (!isFinished && getTimer() < time)
isFinished = continueSort();
if (isFinished)
removeEventListener(Event.ENTER_FRAME, iterateSort);
}
function continueSort():Boolean
{
... implement an 'atom of sort' here, whatever that means ...
}