C 此代码的大O符号 intara(intdizi[],intilk,intson,intdeger){ int indeks; 如果(同类>子类) 返回0; 指数=(同类+子)/2; if(dizi[indeks]deger) 返回ara(dizi、ilk、indeks-1、deger); 其他的 返回1; } 因为(i=1;i
在我看来是线性的。但是你的格式很糟糕,所以很难说C 此代码的大O符号 intara(intdizi[],intilk,intson,intdeger){ int indeks; 如果(同类>子类) 返回0; 指数=(同类+子)/2; if(dizi[indeks]deger) 返回ara(dizi、ilk、indeks-1、deger); 其他的 返回1; } 因为(i=1;i,c,big-o,C,Big O,在我看来是线性的。但是你的格式很糟糕,所以很难说 编辑:好的,涉及递归。那么不是线性的。如果我们有有有意义的变量名,这会更容易。在我看来是线性的。但是你的格式很糟糕,所以很难说 编辑:好的,涉及递归。那么不是线性的。如果我们有有有意义的变量名,那就更容易了。ara是二进制搜索的递归实现。也就是O(logn) 它被称为2n-1次。将这两个项相乘,整个程序就是O(n logn)。ara是二进制搜索的递归实现。也就是O(logn) 它被称为2n-1次。将这两个项相乘,程序作为一个整体是O(n logn
编辑:好的,涉及递归。那么不是线性的。如果我们有有有意义的变量名,这会更容易。在我看来是线性的。但是你的格式很糟糕,所以很难说
编辑:好的,涉及递归。那么不是线性的。如果我们有有有意义的变量名,那就更容易了。
ara
是二进制搜索的递归实现。也就是O(logn)
它被称为2n-1次。将这两个项相乘,整个程序就是O(n logn)。
ara
是二进制搜索的递归实现。也就是O(logn)
它被称为2n-1次。将这两个项相乘,程序作为一个整体是O(n logn)。您可以进一步简化您的答案(我不确定它是否正确)。假设log是基数2,2^(logn)=n,那么您的答案将是O(n^2)。您的猜测是错误的。-)为什么这不是一个真正的问题?这里有一个问题,ephemient给出了一个明确的答案(不是发问者认为的答案)。当然这是一个真正的问题,只是一个简单的问题。@Mike:O(2^logn)=O(n)在任何基础上。你可以进一步简化你的答案(我不确定它是否正确)。假设log是基数2,2^(logn)=N,那么您的答案将是O(N^2)。您的猜测是错误的。:-)为什么这不是一个真正的问题?这里有一个问题,ephemient给出了一个明确的答案(不是发问者所想的答案)。当然这是一个真正的问题,只是一个简单的问题。@Mike:O(2^logn)=O(n)在任何基础上。你以秒数击败了我!你比我快了几秒钟!仅仅因为你不会说土耳其语,变量名就没有意义:-)谢谢paxdiablo!变量是您知道的变量(x,y,z,bla.bla.)。我是新来的,我不能将int main()方法作为代码插入文本区域。所以我省略了。仅仅因为你不会说土耳其语,变量名就没有意义:-)谢谢paxdiablo!变量是您知道的变量(x,y,z,bla.bla.)。我是新来的,我不能将int main()方法作为代码插入文本区域。所以我省略了。
int ara(int dizi[], int ilk, int son, int deger) {
int indeks;
if ( ilk > son )
return 0;
indeks = (ilk + son) / 2;
if ( dizi[indeks] < deger )
return ara(dizi, indeks+1, son, deger);
else if ( dizi[indeks] > deger )
return ara(dizi, ilk, indeks-1, deger);
else
return 1;
}
for (i=1; i<2*n; i++) {
printf("Bir sayi giriniz: ");
scanf("%d", &sayi);
sonuc = ara(matrix, 0, n-1, sayi);
if ( sonuc == 1 )
printf("Found!\n");
else
printf("Not Found!\n");
}