Java 时间复杂度未排序回溯数组

Java 时间复杂度未排序回溯数组,java,time-complexity,Java,Time Complexity,我有一个作业,其中有一个方法: 公共int回溯搜索(int[]arr、int x、int fd、int bk、Stack myStack) 它接收未排序的整数数组arr并搜索第一个数组的索引 在每次fd多次搜索后,值x与添加的属性一起出现 后退,后退,后退很多步。这个 如果找到所需的索引或到达数组的and,则算法停止 现在,有人问我在使用(A,x,调用函数时的时间复杂度。好的,让我们在不查找运行时函数的情况下尝试查找时间复杂度。 为了做到这一点,我们应该检查最坏的情况。在本例中,最坏的情况是数组

我有一个作业,其中有一个方法:

公共int回溯搜索(int[]arr、int x、int fd、int bk、Stack myStack) 它接收未排序的整数数组arr并搜索第一个数组的索引 在每次fd多次搜索后,值x与添加的属性一起出现 后退,后退,后退很多步。这个 如果找到所需的索引或到达数组的and,则算法停止


现在,有人问我在使用(A,x,调用函数时的时间复杂度。好的,让我们在不查找运行时函数的情况下尝试查找时间复杂度。 为了做到这一点,我们应该检查最坏的情况。在本例中,最坏的情况是数组中不存在x。因此程序将遍历整个数组

但是程序也必须回溯每一个向前的n1步,这使得过程变慢。每次我们尝试检查新元素时,我们也会回溯n2元素,回到没有新元素可供我们检查的地方

所以问题是,这些额外的“规则”在多大程度上影响了我们在整个数组中最初的n步(当n是数组的大小时)?我们是否为每个元素额外花费n步?-导致O(n²)的复杂性.或者它是线性的?-这意味着我们最初的n步只与不依赖于数组大小的常量相乘或相加

那么,额外的步骤只取决于n1和n2的值,对吗?如果数组的大小加倍,我们希望运行时也加倍。因此,当大小增加时,运行时应该线性增加

因此,该方法的时间复杂度是O(n)-线性的