int dup_chk(int a[], int length)
{
int i = length;
while (i > 0)
{
i--;
int j = i -1;
while (j >= 0)
{
if (a[i] == a[j])
{
return 1;
}
j--;
}
}
return 0;
}
所以我想我知道的是:
我对计算算法的时间复杂度非常陌生,所以我甚至不确定我认为我知道的是否完全正确。但是让我困惑的是if语句,我不知道如何计算它(如果它之后还有一个其他语句呢?)
编辑:总计等于3/2N^2 5/2N 3我知道这个函数是O(N^2),但不太明白总计是如何计算的。
当循环迭代时,执行if检查的次数与内部检查的次数相同。
根据定义,返回1最多只执行一次。您似乎假设输入中没有重复项(即最坏情况),在这种情况下,返回1语句从不执行。
你最终会感觉到你可以忽略代码的哪些部分,所以你不需要计算这个“总计”,只需要意识到有两个嵌套的循环,每个循环遍历数组-即O(N^2)。
也许这可以帮助您了解代码中的错误。我添加了一些打印输出,以便更容易理解代码中发生的情况。我认为这应该足以找到您的错误
int dup_chk(int a[], int length)
{
int j = 0;
int i = length;
char stringa[30];
printf("Before first while loop j = %d and i = %d \n", j, i);
while (i > 0)
{
i--;
j = i - 1;
printf("\tIn first while loop j = %d and i = %d\n", j, i);
while (j >= 0)
{
printf("\t\tIn second while loop j = %d and i = %d\n", j, i);
if (a[i] == a[j])
{
printf("\t\tIn if statment j = %d and i = %d\n", j, i);
return 1;
}
j--;
printf("\t\tEnd of second while loop j = %d and i = %d\n", j, i);
}
}
printf("After first while loop j = %d and i = %d \n", j, i);
printf("Press any key to finish the program and close the window\n");
return 0;
}
我还建议您调试代码,以更好地了解情况。
通常不需要对时间复杂度进行如此准确的分析。根据Big-O了解它就足够了。然而,出于自己的好奇心,我做了一些计算。
如果您关心的只是获得时间复杂度的最坏情况分析,请考虑一个只有唯一元素的数组。在这种情况下:
i递减,分配j,内部while条件失败N次。也就是说,还有4N次操作
在所有循环之外,还有三条语句。初始化i,while条件失败一次,然后返回语句。再加上3个
3/2N2-3/2n4n3。
那是3/2N25/2N 3。这是你的“总数”。
我再说一遍,这种计算对于所有实际目的来说都是完全没有必要的。
所以程序应该是:-获取用户的输入,直到用户键入“n或N”以显示停止的标志-当用户键入“n或N”时,程序正数和负数和。 还有我得到的 这个错误信息,我不知道是什么问题。提前谢谢你!
我试图为这段代码找出一个大O的紧密界限: 如果我们从内最循环开始,它将在最坏的情况下运行k=n^2次,占O(N^2)。如果语句每次j=m*i时都为真,其中m是一个任意常数。由于j从1运行到i^2,这将在m={1,2,...,i}时发生,这意味着它将在i次时为真,i最多可以是n,所以最坏的情况将是m={1,2,...,n}=n次。如果i=n,第二个循环应该有O(N^2)的最坏情况。外环具有O(N)的
我正在为学校做一个简单的Java计算器,效果很好。但是,我需要添加一个while循环,询问用户是否要继续是/否。不过,我不知道应该将while语句放在哪里。我试着把if语句放在上面,我试着把它放在下面,然后把它添加到每个if和else if语句中,但仍然无法让它工作。在if和else-if语句中,应该在哪里放置while循环,以获得运行while循环的所有选项?
Python 中,while 循环和 if 条件分支语句类似,即在条件(表达式)为真的情况下,会执行相应的代码块。不同之处在于,只要条件为真,while 就会一直重复执行那段代码块。 while 语句的语法格式如下: while 条件表达式: 代码块 这里的代码块,指的是缩进格式相同的多行代码,不过在循环结构中,它又称为 循环体。 while 语句执行的具体流程为:首先判断条件表达式的值,
if语句 (实际上是if表达式) OCaml有两种if语句: if boolean-condition then expression if boolean-condition then expression else other-expression 不同于传统的语言,if语句是表达式。它们更类似于C类语言中的三元操作符?: 而不是你所熟悉的if语句。 下面是if语句的简单例子: # le
本文向大家介绍ASP中if语句、select 、while循环的使用方法,包括了ASP中if语句、select 、while循环的使用方法的使用技巧和注意事项,需要的朋友参考一下 具体的介绍就不多说了,大家看下实例就可以了 考虑后期的便于阅读,呐喊教程小编再为大家整理一下 asp if语句 ①if A then B ②if A then B end if ③if A then B else C e