Если предположить, что «команды здесь» выполняются в постоянное время, тогда вы правы.
Вы описываете кусочную временную сложность для данного алгоритма, зависящую от значений x
и y
. Вы правильно разбили два случая и проанализировали их сложность, снова предполагая, что «команды» являются постоянными по времени. Теперь, чтобы сравнить два случая более строго:
Показать, что последний случай, (x!=y)
, асимптотически больше, чем первый, (x==y)
, и, следовательно, является наихудшим случаем, так же просто, как показать, что N^3
не меньше N^2
для всех значений N
, превышающих определенное значение. Поскольку N^3
больше N^2
для всех значений, по крайней мере, 0, мы можем сказать, что N^2 = O(N^3)
и, следовательно, O(N^3)
на самом деле является худшим из двух случаев и, следовательно, наихудшим временем выполнения. Можно применить аргумент симметрии c, чтобы показать, что другой случай является оптимальной средой выполнения.
Вы можете показать то же самое быстрее, взяв предел одной среды выполнения, разделенной на другую как N
уходит в бесконечность. Если этот предел достигает 0, то числитель = O (знаменатель), а если он стремится к бесконечности, то верно обратное. Если он переходит в некоторую положительную константу, то они имеют одинаковую асимптотическую c сложность, выраженную нотацией омега.
краткий обзор асимптотики c нотация
Вы могли бы погрузиться в анализ среднего случая, если бы знали что-нибудь о распределениях X
и Y
, поскольку вы сможете определить вероятность того, что произойдет худший / лучший случай.