【发布时间】:2012-03-25 16:25:03
【问题描述】:
我有一个任务要我编写一个三元搜索算法,然后计算它的时间复杂度。我能够为它编写一个算法,但我想不出任何想法来计算它的复杂性。我想我不明白 big-theta 表示法的概念。
这是我的代码:它像二进制搜索一样工作,但只是将列表分成几部分并继续搜索。
*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";
如果你能解释如何用大θ表示法来确定它的复杂性,那对我很有帮助。
【问题讨论】:
标签: search time complexity-theory