Ну, есть несколько неправильных вопросов.
1-й: Сортировка набора сопоставимых объектов: Если я не ошибаюсь, то каждый объект сопоставим.Исходные строки могут быть отсортированы без сопоставления, но это особый случай.
Я выберу быструю сортировку со случайным перемешиванием, чтобы избежать наихудшего сценария.Попробуйте Doubling ratio-test на Mergesort и QuickSort, вы заметите, что с увеличением размера слияние станет медленнее.Однако Mergesort может быть улучшен с помощью вставки-сортировки в рекурсивных вызовах.
2: Это то же самое, что сортировка строк, и это полностью зависит от того, как вы хотите их отсортировать?По первой цифре, последняя цифра или все должны быть отсортированы?Так что для них существует множество алгоритмов: MSD , LSD , Quick-3wayString сортирует .
4: Сортировка набора сопоставимых элементов при условии, что вы знаете, что первые (nm) элементы уже отсортированы, и только последние m элементов не отсортированы.Существует ли процесс O (m log n) или O (n log m): Можно ли использовать сортировку вставкой в базовом случае сортировки слиянием , чтобы всегда разбивал массив надве половины (нм) и (м + 1 - н)?Так как сортировка вставкой прервет цикл после выполнения только n сравнения, а другая половина будет отсортирована по сортировке слиянием в NlogN , и вы получите верхнюю границу как NlogN .
5: сортировка набора сопоставимых элементов при условии, что решение требуется в определенный срок, который в будущем будет меньше n ^ 2 операций: Я также выберу дляСлияние, но если мне разрешено вносить изменения в алгоритм, тогда я буду использовать быструю сортировку со случайным перемешиванием (примечание: есть вероятность, что вы получите n ^ 2 временную сложность).
6: Да, если вам нужно выбрать один из этих алгоритмов, тогда Mergesort - единственный.