Я думаю, что для того, чтобы действительно ответить на этот вопрос, вам нужно сделать шаг назад и проверить свои предположения.Когда вы говорите что-то вроде «heapsort должен быть быстрее, чем quicksort», что заставляет вас это говорить?
Если ваша причина - «потому что у кого-то лучше большие обозначения O», вам нужно пересмотреть, что на самом деле означает большое O,нотация Big O игнорирует постоянные факторы, а при использовании малых чисел, таких как 5000, постоянные факторы могут подавлять асимптотическое поведение.
Если ваша причина такова: «потому что википедия говорит, что обычно это быстрее», вам нужно сосредоточиться на «обычно".Ряд факторов может повлиять на то, какой из них быстрее, например, насколько велик размер вашей выборки, были ли числа уже частично отсортированы, сколько у вас повторяющихся чисел.Другие факторы включают поведение кеша - некоторые алгоритмы предполагают более ограниченный доступ к памяти и могут лучше использовать кеш.С другой стороны, интерпретируемый язык может или не может испортить эту локализацию по сравнению с скомпилированной программой, что еще больше сбивает с толку.
Одна вещь, которую вы обязательно должны попробовать, это запустить с разными тестовыми данными - попробовать 10 миллионовпредметы, где предметами являются цифры от 0 до 4 миллиардов или около того.Затем попробуйте 10 пунктов, варьирующихся от 0 до 20. Вы не обязательно должны ожидать, что один и тот же алгоритм «победит» в обоих случаях.
Тестовые данные, которые вы используете сейчас, вероятно, не лучший вариант использования для алгоритмов сортировки общего назначения.С 5000 номеров, выбранных из потенциального пула всего в 200, вы гарантированно получите большое количество дубликатов.С таким количеством дубликатов счетная сортировка почти наверняка будет самой быстрой.
Еще одна вещь, которую стоит рассмотреть - насколько вы уверены в своей функции времени?Вы знаете, интерпретируется ли actionScript или компилируется?Вы проводите свои тесты 100 раз или около того, чтобы амортизировать любую работу по инициализации, которая должна быть выполнена?