Например, так:
1. Выбираем 1 случайный элемент. Сравниваем с ним по 9 остальных элементов и делим их на те, что меньше референсного, и те, что больше.
2. Рекурсивно сортируем получившиеся 2 под-массива.
Для улучшения можно взять несколько (2...9) референсных элементов, предварительно их отсортировав.
Самостоятельно проанализируйте, какое количество референсных элементов оптимально.
-- Ср июн 02, 2010 13:58:24 --решение есть:
1.берем первые 10, определяем какой из них с самым меньшим рангом
2. на его место ставим 11 элемент и опять определяем обьект с самым меньшим рангом.
Кстати, даже Ваш вариант легко ускорить в 9 раз, если на каждой итерации сравнивать текущий минимальный с 9-ю новыми.
А можно ускорить и в 25 раз, если за один проход искать сразу 5 минимальных элементов.
Но это всё равно будет квадратичный алгоритм, а то, что предложил я -
![$O(N\log N)$ $O(N\log N)$](https://dxdy-04.korotkov.co.uk/f/3/a/e/3aee54392a4303241a31fb7df9300ef882.png)
, причём с константой сильно меньше единицы, т.е. быстрее, чем quicksort.