Как посчитать O-нотацию в данной функции

void func(int A[], int low, int high)
    {
        int i = low;
        int j = high;
        int x = A[(low + high) / 2];
        do {
            while (A[i]< x)
                ++i;
            while (A[j]> x)
                --j;
            if (i <= j)
            {
                int temp = A[i];
                A[i] = A[j];
                A[j] = temp;
                i++; j--;
            }
        } while (i < j);
        if (low < j) //recursion
            func(A, low, j);
        if (i < high) //recursion
            func(A, i, high);
    }

Есть такая функция. Мне нужно посчитать ее О-нотацию. while (A[i]< x) -O(n) и while (A[j]> x)- O(n). Тоесть О-нотация етих двух циклов O(n). И дальше я думаю што О-нотация цикла do while- O(A*N). Вопрос какая О-нотация всей етой функции, я не знаю как рекурсия повлияєт на О-нотацию цикла, и прав ли я вообще c О-нотациями циклов.


Ответы (0 шт):