Патологічне сортування
Ваш начальник вимагає розробити алгоритм сортування, щоб поліпшити продуктивність програми вашої компанії. Однак, написавши заявку, ви знаєте, що навряд чи зможете зробити це значно швидше. Не бажаючи розчаровувати свого начальника, ви вирішили розробити новий алгоритм, який працює навіть краще, ніж * сортування на певних наборах даних. Звичайно, ви не можете зробити очевидним, що алгоритм працює лише в деяких випадках, тому ви хочете зробити його незрозумілим, наскільки це можливо.
Мета цього конкурсу - написати процедуру сортування на обраній вами мові, яка на певних наборах даних буде краще, ніж інші, з результатами, що повторюються. Чим конкретніша класифікація, яка визначає швидкість, тим краще. Алгоритм повинен робити сортування певного роду, тому алгоритм, який залежить від даних, які вже повністю відсортовані (як, наприклад, алгоритм, який нічого не робить), або алгоритм, який залежить від повного сортування даних у зворотному напрямку, обидва є недійсними. Алгоритм сортування повинен правильно сортувати будь-який набір даних.
Після подання розпорядку, будь ласка, включіть пояснення, чому він працює лише на певних наборах даних, і включіть тестові запуски принаймні одного набору хороших (швидких) даних та одного набору поганих (повільних) даних. Сенс у тому, щоб можна було довести своєму начальнику, що ви натрапили на кращий спосіб сортування, тому більше даних про тести краще. Звичайно, ви лише збираєтесь показати своєму начальникові результати тестування з хороших даних, тому недолік необхідних даних тестування не може бути занадто очевидним. Якщо це стосується вашої мови, будь ласка, покажіть, що ваш алгоритм швидший, ніж вбудований алгоритм сортування вашої мови.
Наприклад, можна подати алгоритм сортування вставки, причому хороші дані - це вже майже відсортовані дані, а погані - цілком випадкові дані, оскільки сортування вставки наближається до O (n) на майже відсортованих даних. Однак це не дуже добре, оскільки мій начальник, мабуть, помітить, що всі дані тестування для початку майже відсортовані.
Це змагання за популярність , тому відповідь з найбільшою кількістю голосів виграє через 7 днів (21 травня).
Якщо мене ніхто не перемагає, я хотів би надіслати відповідь на вікі спільноти, яка використовує переваги рівномірно розподілених наборів даних.