好的,我正在尝试理解Big O的概念。我有一个函数我想要找到Big O而我不是“得到它”这是一个像我的书中的例子家庭作业..我知道答案是O(nk),但有人可以用简单的术语来解决这个问题,所以我可能会更好地理解。
int selectkth(int a[], int k, int n)
{
int i, j, mini, tmp;
for (i=0; i < k; i++)
{
mini = i;
for (j = i+1; j < n; j++)
{
if (a[j] < a[mini])
mini = k;
tmp = a[i];
a[i] = a[mini];
a[mini] = tmp;
}
}
return a[k-1];
}
答案 0 :(得分:1)
在计算bigO时,要考虑最糟糕的时间复杂度,并注意循环。这里我们有两个循环:
//下线运行k次
for(i = 0; i&lt; k; i ++)
//最糟糕的情况是,下面的循环将运行n次。
表示(j = i + 1; j bigO将这两个值乘以togehter = k * n 另请查看此帖子:What is a plain English explanation of "Big O" notation?