По первому вопросу есть разница между временем выполнения алгоритма в лучшем случае, временем выполнения алгоритма в худшем случае, big-O и big- & Omega; нотации. Время выполнения алгоритма в наилучшем и худшем случаях - это фактические математические функции с точными значениями, которые сообщают вам о максимальном и минимальном объеме работы, выполняемой алгоритмом. Чтобы описать темпы роста этих функций, мы можем использовать big-O и big- & Omega; нотации. Тем не менее, можно описать наилучшее поведение функции с помощью big- & Omega; нотация или худший случай с нотацией big-O. Например, мы можем знать, что время выполнения функции в худшем случае может быть O (n 2 ), но на самом деле не знаем, какая функция O (n 2 ), худшая - Случайное поведение есть. Это может произойти, если мы хотим ограничить поведение наихудшего случая, чтобы мы знали, что оно не катастрофически плохо. Возможно, что в этом случае поведение в худшем случае на самом деле является & Theta; (n), и в этом случае O (n 2 ) является плохой верхней границей, но говорят, что поведение в худшем случае равно O (n 2 ) в этом случае означает, что это не страшно. Точно так же мы могли бы сказать, что наилучшим поведением алгоритма является, например, Omega; (n), если мы знаем, что он должен выполнять хотя бы линейную работу, но не можем сказать, должно ли оно делать намного больше, чем это.
Что касается вашего второго вопроса, анализ поведения алгоритма наихудшего и наивысшего вариантов абсолютно зависит от структуры входных данных, и обычно анализ поведения наихудшего и наихудшего случая довольно сложен. алгоритма, не видя, как он работает на разных наборах данных. Совершенно разумно провести анализ наихудшего случая, представив какое-то определенное семейство входов (обратите внимание, что это должно быть семейство входов, а не только один вход, поскольку нам нужно получить асимптотическую границу) и показывая, что алгоритм должен плохо работать на этом входе. Вы можете сделать анализ наилучшего случая таким же образом.
Надеюсь, это поможет!