gpt4 book ai didi

java - 用于查找数组中最大数字的递归算法的运行时间复杂度是多少。将其与迭代循环代码进行比较

转载 作者:行者123 更新时间:2023-12-01 17:38:29 25 4
gpt4 key购买 nike

我已经在迭代循环代码中编写了最大数的代码。我发现代码的运行时间复杂度是 O(n)。最大数量的递归代码的运行时间复杂度是多少,它与迭代循环有何不同。哪个会更好。我的迭代循环代码是

package com.bharat;

import java.util.Arrays;
import java.util.Scanner;

public class Main {

public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter the numbers you want to add in the array: ");
int number = scanner.nextInt();
int[] myIntgersArray = getIntegers(number);

System.out.println(Arrays.toString(myIntgersArray));
System.out.println(findBiggestNumber(myIntgersArray));
}


public static int[] getIntegers(int number){
Scanner scanner = new Scanner(System.in);
int[] values= new int[number];
for (int i =0;i<values.length;i++){
values[i]=scanner.nextInt();
}
return values;
}

public static int findBiggestNumber(int[] array){
int i=0;
int biggestNumber = array[i];
for ( i = 0;i<array.length;i++){
if (array[i]>biggestNumber){
biggestNumber=array[i];
}
}
return biggestNumber;
}
}

评论中发布的递归代码 -

public static int findBiggestNumber(int[] array, int number) { 
int highestNumber = array[0];

if (number==1) {
return highestNumber;
}
else {
if (highestNumber < array[number]) {
array[number] = highestNumber;
return highestNumber;
}
}

return findBiggestNumber(array, number-1);
}

最佳答案

正确的递归代码(假设数组至少有 1 个元素)-

public static int findBiggestNumber(int[] array, int number)
{

if(number == 1) //only one element is there in array
{
return array[number - 1];
}


return Math.max( array[number - 1] , findBiggestNumber(array,number-1) );
}

递归代码的运行时间为 O(n),但由于递归函数调用堆栈,它具有 O(n) 的额外空间开销。

为什么递归代码的时间复杂度为 O(n) ?

它解决了 n-1 个较小的问题。并且根据第 n-1 个问题的结果,在 O(1) 时间内解决了第 n 个问题。

递归代码如何工作?

如果您有一个具有 n 大小的数组,则该数组的最大元素是
1. 最后一个元素array[n-1],或
2. n-1 大小的数组的最大元素。

要计算 n-1 大小的数组的结果,请重复类似的操作。

基本情况是,当数组中只有一个元素时,这就是最大值。

关于java - 用于查找数组中最大数字的递归算法的运行时间复杂度是多少。将其与迭代循环代码进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61005000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com