如何找到这个Java程序的Big-O复杂性和最坏情况下的运行时间?

如何找到这个Java程序的Big-O复杂性和最坏情况下的运行时间?,java,big-o,Java,Big O,我很难理解大O符号。如何找到此函数的大O和最坏情况运行时间 我编写这个函数是为了反转双链接列表的顺序 public void reverse() { Node<T> temp = head; Node<T> current = head.next; head.next = null; head.previous = current; while(current != null) { Node<T>

我很难理解大O符号。如何找到此函数的大O和最坏情况运行时间

我编写这个函数是为了反转双链接列表的顺序

public void reverse() {
    Node<T> temp = head;
    Node<T> current = head.next;
    head.next = null;
    head.previous = current;

    while(current != null)
    {
        Node<T> next = current.next;
        current.next = temp;
        current.previous= next;
        temp = current;
        current = next;
    }
    head = tail;
}
public void reverse(){
节点温度=头;
节点电流=head.next;
head.next=null;
head.previous=当前;
while(当前!=null)
{
Node next=current.next;
当前。下一个=温度;
当前。上一个=下一个;
温度=电流;
当前=下一个;
}
头=尾;
}

查找嵌套循环的数量


因为没有一个,所以它只是O(n),因为在循环过程中,
n
没有几何缩减

查找嵌套循环的数量

因为在循环过程中,
n
没有几何上的缩减,所以没有一个是O(n),“数据结构”应该提醒我们一个“双链表”,并且假设一个大小为
n
的列表,这个算法颠倒了列表的顺序。 现在,我们可以计算此算法将完成的(比较、分配、数学)操作(此外,它是否正确和终止)…与
n

我们会发现,这个算法(在最坏、最好和平均(所以每种))的情况下:

…顺便说一句:它是正确的&终止了!;)

这个“数据结构”应该提醒我们一个“双链表”,假设一个列表的大小为
n
,这个算法会颠倒列表的顺序。 现在,我们可以计算此算法将完成的(比较、分配、数学)操作(此外,它是否正确和终止)…与
n

我们会发现,这个算法(在最坏、最好和平均(所以每种))的情况下:


…顺便说一句:它是正确的&终止了!;)

Big-O指定运行时间如何随着输入的增加而增加。例如,如果您的输入大小增加了
k
次,并且您的运行时间增加了2次多项式,那么这将是一个
O(n^2)
算法。对于较小的输入,Big-O是相当无用的,因为影响运行时间的其他因素是不可忽略的。Big-O指定运行时间如何随着输入的增加而增加。例如,如果您的输入大小增加了
k
次,并且您的运行时间增加了2次多项式,那么这将是一个
O(n^2)
算法。对于较小的输入,Big-O是相当无用的,因为影响运行时间的其他因素是不可忽略的。
4 assign statements:
 Node<T> temp = head;
 Node<T> current = head.next;
 head.next = null;
 head.previous = current;
n + 1 compare statements:
 while(current != null)
(lets not count the braces))
n * 5 assign operations:
 Node<T> next = current.next;
 current.next = temp;
 current.previous= next;
 temp = current;
 current = next;
and 1 last assign operation
 head = tail;
6n + 6 = O(n)