如何找到这个Java程序的Big-O复杂性和最坏情况下的运行时间?
我很难理解大O符号。如何找到此函数的大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>
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)