Патологическая сортировка
Ваш начальник потребовал, чтобы вы разработали алгоритм сортировки, чтобы улучшить производительность приложения вашей компании. Однако, написав приложение, вы знаете, что вряд ли сможете сделать его значительно быстрее. Не желая разочаровывать своего начальника, вы решили разработать новый алгоритм, который работает даже лучше, чем * сортировать определенные наборы данных. Конечно, вы не можете сделать очевидным, что алгоритм работает только в некоторых случаях, поэтому вы хотите сделать его как можно более неясным.
Цель этого конкурса - написать процедуру сортировки на выбранном вами языке, которая лучше работает с определенными наборами данных, чем с другими, с повторяемыми результатами. Чем конкретнее классификация, определяющая скорость, тем лучше. Алгоритм должен выполнять какую-либо сортировку, поэтому алгоритм, который зависит от данных, которые уже полностью отсортированы (например, алгоритм, который ничего не делает), или алгоритм, который зависит от данных, которые полностью сортируются в обратном порядке, оба недопустимы. Алгоритм сортировки должен правильно сортировать любой набор данных.
После представления вашей процедуры, пожалуйста, включите объяснение того, почему она работает только с определенными наборами данных, и включите тестовые прогоны как минимум с одним набором хороших (быстрых) данных и одним набором плохих (медленных) данных. Суть в том, чтобы вы могли доказать своему боссу, что вы наткнулись на лучший способ сортировки, поэтому больше тестовых данных лучше. Конечно, вы только покажете своему боссу результаты теста на основе хороших данных, поэтому недостаток необходимых данных тестирования не может быть слишком очевидным. Если применимо к вашему языку, пожалуйста, покажите, что ваш алгоритм работает быстрее, чем встроенный алгоритм сортировки вашего языка.
Например, можно представить алгоритм сортировки вставкой, причем хорошими данными являются данные, которые уже почти отсортированы, а неверными данными - полностью случайные данные, поскольку сортировка вставок приближается к O (n) для почти отсортированных данных. Тем не менее, это не очень хорошо, так как мой начальник, вероятно, заметит, что все данные тестирования почти отсортированы с самого начала.
Это конкурс популярности , поэтому ответ с наибольшим количеством голосов через 7 дней (21 мая) выигрывает.
Если никто не побеждает меня, я хотел бы представить ответ сообщества вики, который использует преимущества равномерно распределенных наборов данных.