Le temps de la Complexité de Ternaire de l'Algorithme de Recherche

J'ai une mission qui veut de moi pour écrire un ternaire de l'algorithme de recherche et de calculer son temps de complexité par la suite. J'étais capable d'écrire un algorithme pour elle, mais je ne pouvais pas venir avec des idées comment faire pour calculer sa complexité. Je pense que je n'ai pas compris le concept de big-theta notation.

Voici mon code: Il fonctionne comme binaire de recherche, mais seulement divise la liste il y en morceaux et continue la recherche comme ça.

    *some list which contains n increasingly-ordered integers;*

    int num;

    int min = 1;
    int max = n;

    int middle1 = (2*min+max)/3; 
    int middle2 = (min+2*max)/3;

    cin >> num;    //num is the number that is wanted to be found

    while (middle1 != middle2)
    {
        middle1 = (2*min+max)/3;
        middle2 = (min+2*max)/3;

        if(num <= list[middle1])
            max = middle1;
        else if(num >list[middle1] && num <= list[middle2])
            {
                    min= middle1; 
                    max = middle2;
            }
        else
            min = middle2;
    }
    if(num == list[max])
        cout << "your number is found in the "<< max <<"th location\n";
    else
        cout << "number cannot be found";

Si vous pourriez nous expliquer comment déterminer sa complexité en termes de big-thêta de notation, il serait très utile pour moi.

InformationsquelleAutor hevele | 2012-03-25