Да, сравнения должны быть включены в стоимость. Существует около n^2/8
сравнений, которые дают квадратичную c сложность.
Обратите внимание, что вы не знаете реального числа перестановок, но этот факт не влияет на сложность. Количество операций варьируется от n^2/8
до 4*n^2/8
, но оба выражения относятся к Theta(n^2)
классу
Точный расчет стоимости зависит от вашего подхода к книге и желания инструктора :).
В общем случае необходимо рассчитать все операторы со стоимостью 1 (несмотря на то, что некоторые из них могут быть внутренне сложными, например, for-l oop). Например, for i = 0 ... n/2
дает стоимость n/2
, оба for j = 0 ... i
и if arr[j] > arr[n-i-1]
дают стоимость k=n/2*(n/2-1)/2
, а свопы дают стоимость в диапазоне k..3k
Таким образом, общая стоимость составляет
n/2 + 2 * n/2*(n/2-1)/2 + x * n/2*(n/2-1)/2
где x зависит от данных и лежит в диапазоне 1..3