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.
Vous devez vous connecter pour publier un commentaire.
À chaque étape, vous êtes à la réduction de la taille de la base de la gamme par un facteur constant (dans ce cas-3). Si vous trouvez que votre élément après n étapes, puis la base de la gamme de taille a N = 3n. Inversement, le nombre d'étapes que vous avez besoin jusqu'à ce que vous trouver l'élément est le logarithme de la taille de la collection. C'est, le temps d'exécution est O(log N). Un peu de réflexion montre que l'on peut toujours construire des situations où vous avez besoin de toutes ces étapes, de sorte que le pire cas d'exécution est en fait Θ(log N).
n
juste multiplie le temps par une constante.Il est Θ(log3(N)).
Pour vérifier comment calculer la complexité viens de vérifier http://en.wikipedia.org/wiki/Big_O_notation
Pour en savoir plus sur ternaire de recherche, il suffit de consulter la page wikipedia aussi: http://en.wikipedia.org/wiki/Ternary_search
Θ
dans le post; en entité HTML références sont acceptés.