В худшем случае A
отсортировано в порядке убывания, что означает, что для j
-ой записи внутренний цикл будет выполняться j
раз (дать или взять "+1" или "- 1" ...). К счастью, для этого есть формула: как Гаусс, как известно, спонтанно и под принуждением , суммирование всех чисел от 1
до n
дает результат n*(n+1)/2
.
Поскольку мы заботимся только о сложности, а не о фактических значениях, мы можем оставить постоянные и мультипликативные коэффициенты выключенными и получить O(n^2)
.
Если не принимать во внимание язык, тот факт, что внутри цикла есть цикл, является сильным показателем для O(n^2)
, когда счетчик внутренних циклов ограничен линейно - что он здесь.
В лучшем случае, когда A
уже отсортировано в порядке возрастания, внутренний цикл будет введен вовсе, а общая сложность составит O(n)
.
Средний случай сильно зависит от того, как выглядит ваша ожидаемая "неупорядоченность". Например, сортировка будет вести себя очень хорошо, если ваш список в основном всегда уже отсортирован, а таких локальных переключений очень мало.