У меня нет сложного формального образования.Но если вы думаете об этом как о математической проблеме, вы можете доказать это как математическое доказательство.
Для всех алгоритмов сортировки лучший сценарий всегда будет O (n) для n элементов, потому что для сортировки n элементов вы должны рассмотреть каждый из них как минимум один раз.Теперь, для вашей конкретной оптимизации быстрой сортировки, вы упростили проблему, потому что теперь вы сортируете только уникальные значения: все значения, которые совпадают с сводной, уже считаются отсортированными, и в силу своей природы быстрая сортировкабудет гарантировать, что каждое уникальное значение будет отображаться как опорная точка в некоторый момент операции, поэтому это устраняет дубликаты.
Это означает, что для списка размером N быстрая сортировка должна выполнить некоторую операцию N раз (один раз для каждой позиции в списке), и поскольку она пытается отсортироватьВ списке, эта операция пытается найти положение этого значения в списке, но поскольку вы эффективно работаете только с уникальными значениями, а их k , алгоритм быстрой сортировки должен выполнить k сравнения для каждого элемента.Таким образом, он выполняет Nk операций для списка размером N с k уникальными элементами.
Подводя итог:
- Этот алгоритм исключает проверку на повторяющиеся значения.
- Но все алгоритмы сортировки должны смотреть на каждое значение в списке хотя бы один раз. N операций
- Для каждого значения в списке операция должна найти свою позицию относительно других значений в списке.
- Поскольку удаляются дубликаты, остается только k значения для сравнения.
- O (Nk)