Data structures 使用循环向LinkedList添加n个元素的复杂性
假设我做了以下工作:Data structures 使用循环向LinkedList添加n个元素的复杂性,data-structures,linked-list,big-o,time-complexity,Data Structures,Linked List,Big O,Time Complexity,假设我做了以下工作: for(int i = 0; i < n; i++) { list.add(i); } for(int i=0;i
for(int i = 0; i < n; i++) {
list.add(i);
}
for(int i=0;i
如果没有尾部指针,这个问题的复杂性应该是O(n2),对吗?(因为每次插入都是O(n),而我正在进行n次插入?)但如果有尾部指针,它将是O(n),对吗?是的,对。使用尾部指针,您可以通过转到尾部指针指向的元素,更新“next”指针,然后更新尾部以指向新元素,在时间O(1)中将值附加到链表中。总运行时间为O(n) 另一方面,如果没有尾部指针,查找列表的最后一个元素以便更新其指针将需要时间O(n),因为必须扫描列表的所有元素。因此,总运行时间为O(n2)
希望这有帮助 。。。只要它是添加到尾部,而不是开始。好的,谢谢。如果我在做m插入,我会说O(m*n)还是说O(n^2)更好@Lucasi如果你的意思是做m个插入操作(在固定位置)而不是
列表。在循环中添加,那么它将完成mn个操作。如果插入操作不依赖于列表的长度,或者列表的长度不随每次迭代而改变,那么它就是O(n)。