Например, так:
1. Выбираем 1 случайный элемент. Сравниваем с ним по 9 остальных элементов и делим их на те, что меньше референсного, и те, что больше.
2. Рекурсивно сортируем получившиеся 2 под-массива.
Для улучшения можно взять несколько (2...9) референсных элементов, предварительно их отсортировав.
Самостоятельно проанализируйте, какое количество референсных элементов оптимально.
-- Ср июн 02, 2010 13:58:24 --решение есть:
1.берем первые 10, определяем какой из них с самым меньшим рангом
2. на его место ставим 11 элемент и опять определяем обьект с самым меньшим рангом.
Кстати, даже Ваш вариант легко ускорить в 9 раз, если на каждой итерации сравнивать текущий минимальный с 9-ю новыми.
А можно ускорить и в 25 раз, если за один проход искать сразу 5 минимальных элементов.
Но это всё равно будет квадратичный алгоритм, а то, что предложил я -
, причём с константой сильно меньше единицы, т.е. быстрее, чем quicksort.