Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的程序的时间复杂性_Java_Time Complexity - Fatal编程技术网

Java 我的程序的时间复杂性

Java 我的程序的时间复杂性,java,time-complexity,Java,Time Complexity,我想知道这个方法中我的算法的精确时间复杂度。我认为它是nlogn,因为它使用array.sort public static int largestElement(int[] num) throws NullPointerException // O(1) { int a=num.length; // O(1) Arrays.sort(num); // O(1)? yes if(num.length<1) // O(1) return (Integ

我想知道这个方法中我的算法的精确时间复杂度。我认为它是nlogn,因为它使用array.sort

public static int largestElement(int[] num) throws NullPointerException // O(1)
    {
    int a=num.length; // O(1)
    Arrays.sort(num); // O(1)? yes

    if(num.length<1) // O(1)
    return (Integer) null;
    else
    return num[a-1]; // O(1)
    }
public static int largestElement(int[]num)抛出NullPointerException//O(1)
{
int a=num.length;//O(1)
Arrays.sort(num);//O(1)?是

如果(num.length确实是O(nlogn)。Arrays.sort()使用合并排序。但是,使用此方法可能不是找到最大值的最佳方法。您可以在数组中循环,比较元素。

确实是O(nlogn)。Arrays.sort()使用合并排序。使用此方法可能不是找到最大值的最佳方法。您可以在数组中循环,而不是比较元素。

您在文章中似乎自相矛盾。您的方法是O(nlogn),这是正确的,但以下是错误的:

Arrays.sort(num); // O(1)? yes
如果您是对的,那么该方法将是O(1)!毕竟,一组顺序的O(1)进程仍然是O(1)。实际上,
Arrays.sort()
是O(nlogn),它决定了方法的总体复杂性


但是,在数组或集合中查找最大的元素始终可以是O(n),因为我们可以简单地遍历每个元素并跟踪最大值。

您在文章中似乎自相矛盾。您的方法是O(nlogn),这是正确的,但以下是错误的:

Arrays.sort(num); // O(1)? yes
如果您是对的,那么该方法将是O(1)!毕竟,一组顺序的O(1)进程仍然是O(1)。实际上,
Arrays.sort()
是O(nlogn),它决定了方法的总体复杂性

不过,在数组或集合中查找最大的元素始终可以是O(n),因为我们可以简单地遍历每个元素并跟踪最大值。

“您的速度只与最慢的跑步者一样快”——事实上

因此,这里重要的运行时操作是排序和遍历数组。由于Arrays.sort(num)是对数组进行最有效排序的方法,我们可以保证这将是O(nlg(n))(其中lg(n)是n的对数基数2)。这是因为O表示最坏的运行时。此外,数组的步进需要O(n)

所以,我们有O(nlgn)+O(n)+O(1)+

这实际上减少到O(2nlg(n)),但协效率在渐近符号中可以忽略不计。 因此,您的运行时接近O(nlg(n)),如上所述。

“您的速度只与最慢的跑步者一样快”——事实

因此,这里重要的运行时操作是排序和遍历数组。由于Arrays.sort(num)是对数组进行最有效排序的方法,我们可以保证这将是O(nlg(n))(其中lg(n)是n的对数基数2)。这是因为O表示最坏的运行时。此外,数组的步进需要O(n)

所以,我们有O(nlgn)+O(n)+O(1)+

这实际上减少到O(2nlg(n)),但协效率在渐近符号中可以忽略不计。
因此,您的运行时接近O(nlg(n)),如上所述。

Arrays.sort(num);//O(1)?是-否它是
n*log(n)
对数组排序不会导致O(1)复杂度:Arrays.sort(num);//O(1)?是-否
n*log(n)
对数组排序不会导致O(1)复杂度:+1“查找数组或集合中的最大元素始终可以是O(n)”(有效编码时)+1“查找数组或集合中的最大元素始终可以是O(n)”(有效编码时)