Это будет иметь O (n ^ 2) временную сложность.На самом деле, это, вероятно, будет и O (n ^ 2), и тета (n ^ 2).
Посмотрите на логику вашего кода.Вы выполняете следующее:
- Цикл по массиву ввода
- Если текущий элемент больше следующего, переключите два
- Если это неВ этом случае увеличьте индекс (и, по сути, проверьте следующий элемент, так что рекурсивно пройдитесь по шагам 1-2)
- Как только ваш индекс равен длине 1 входного массива, т.е. он прошел весь массив,ваш индекс сбрасывается (строка
i=0
), увеличивается j, и процесс перезапускается.
Это, по сути, гарантирует, что данный массив будет циклически повторен дважды, что означает, что у вас будетWORST-CASE (big o или O (x)) временная сложность O (n ^ 2), но, учитывая этот код, ваша СРЕДНЯЯ (тета) временная сложность будет тета (n ^ 2).
Есть НЕКОТОРЫЕ ситуации, когда вы можете иметь ЛУЧШИЙ СЛУЧАЙ (лямбда) n lg (n), что дает лямбда (n lg * (n)) временную сложность, но эта ситуация редка, и ядаже не уверен, что это возможно с помощью этого кода.