Java 反转数组的reursion方法的时间复杂度

Java 反转数组的reursion方法的时间复杂度,java,arrays,recursion,Java,Arrays,Recursion,我正在解决一个问题,我必须递归地反转数组中的整数 public int[] reverse(int[] A, int i){ if(i = A){ return; } } 它是“O(n/2)”,但它是O(n)。大O是关于标度/量级的,所以O(n/2)=O(n)(读作:n的阶数) 每次调用该方法时,它都以恒定的时间运行(因为它执行的操作数是恒定的),因此每次该方法运行时,它都以O(1)运行,但我们测量程序的总执行顺序,并且由于使用n>1调用该方法会启动一组递归调用

我正在解决一个问题,我必须递归地反转数组中的整数

public int[] reverse(int[] A, int i){
    if(i = A){
        return;
    }
}

它是“O(n/2)”,但它是O(n)。

大O是关于标度/量级的,所以O(n/2)=O(n)(读作:n的阶数)


每次调用该方法时,它都以恒定的时间运行(因为它执行的操作数是恒定的),因此每次该方法运行时,它都以O(1)运行,但我们测量程序的总执行顺序,并且由于使用
n>1
调用该方法会启动一组递归调用,我们说程序的总执行顺序是n=>O(n)

你的算法是O(n),因为O(n)描述了一种算法,其性能将线性增长,并与输入数据集的大小成正比。在你的例子中,除了除以2的大小外,如果你有一个n个元素的数组,则需要n/2,如果你有n+500个元素,需要n+500/2,这意味着/2是常数,算法将线性增长。这意味着它直接取决于N的长度。

我认为它也是O(N/2),去掉常数“1/2”得到O(N)。如果你把它分解得足够多,每一步都是1。事实上,你总是取其中的n/2(随着n的增加而增加),这就是O(n)。好吧,这很短,而且是真的,我会向上投票,因为你用的单词比我少。哈维尔,这是一个专家答案的例子,它是一个加号