Вопрос

Я программирую функцию для Ti-nspire., Так что я не могу использовать встроенные изнутри функции. Какой самый широкий эффективный алгоритм для сортировки списка чисел без изменения самого списка? (Рекурсионная и расщепление списка - это справедливая игра, как и общее использование математики.)

Это было полезно?

Решение

Mergeort - это просты, простые, эффективные и стабильные: разделить список, сортировать рекурсивно и объединить результаты.

Быть более конкретным, Mergeort принимает O (n log n), который асимптотически оптимален. Кроме того, на практике (с обоими алгоритмами модифицированы для сортировки коротких сублистов со спецпортировочным сортом), Mergeort может быть близким участником модифицированной QuickSort, используемой в стандартных библиотеках C / C ++.

Редактировать: В отличие от сортов In-Place, таких как QuickSort и STORMION, MERGEORT требует вспомогательной памяти, и проще всего реализовать, скорее, а не заменять.

Другие советы

Timsort. Используется в Python и Java SE 7. Он занимает лучшее из сортировки слияния и вставки. Сортировка вставки - это o (n ^ 2), но с небольшими списками чисел это быстрее, чем сортировка слияния!

Таким образом, вы можете использовать это как общий алгоритм сортировки, как указано здесь

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top