Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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 方法shuffle中第5行的LinkedList运行时间_Java_Algorithm_Data Structures_Linked List_Runtime - Fatal编程技术网

Java 方法shuffle中第5行的LinkedList运行时间

Java 方法shuffle中第5行的LinkedList运行时间,java,algorithm,data-structures,linked-list,runtime,Java,Algorithm,Data Structures,Linked List,Runtime,我想知道行list.set(I,list.get(j))的运行时是什么;用大O表示法是。是O(n^2)还是O(2n)。在java中,链表的O时间复杂度很大,get方法为O(n),set方法为O(n) publicsvoidshuffle(LinkedList列表){//(1) 对于(int i=0;i

我想知道行list.set(I,list.get(j))的运行时是什么;用大O表示法是。是O(n^2)还是O(2n)。在java中,链表的O时间复杂度很大,get方法为O(n),set方法为O(n)

publicsvoidshuffle(LinkedList列表){//(1)
对于(int i=0;i
我知道最外面的循环运行n次,最里面的循环运行n-1次。我知道当你有嵌套的循环时,你会将它们相乘(我从离散数学的乘积规则得出结论,因为循环是相互独立的)。现在离散数学的求和规则告诉我“A做某事的方式和B做另一件事的方式,我们不能同时做这两件事,那么有A+B的方式来选择其中一种行动”

但是,我不确定get()和set()方法在第5行发生的事情是独立的还是不同时发生

换句话说,是第5行的运行时间O(n^2)还是O(2n)=O(n+n)?

它是O(n)

首先,O(2n)和O(n)是相同的,写O(2n)是不寻常的,但这并不是错误的

第5行中的代码调用函数get once。第三个函数获取值。在O(n)的时间内,它获取第j个元素的值。之后,它调用set一次,并通过此函数在O(n)的时间内设置第i个元素的值

因此,其复杂性是

2O(n)=O(n)

如果我可以建议的话,你的算法的复杂性是O(n^3)。如果你在迭代器上使用“下一步”和“上一步”运算,而不是迭代整数I和j,你可以在O(n^2)中实现它。

它是O(n)

首先,O(2n)和O(n)是相同的,写O(2n)是不寻常的,但这并不是错误的

第5行中的代码调用函数get once。第三个函数获取值。在O(n)的时间内,它获取第j个元素的值。之后,它调用set一次,并通过此函数在O(n)的时间内设置第i个元素的值

因此,其复杂性是

2O(n)=O(n)

如果我可以建议的话,你的算法的复杂性是O(n^3)。如果你在迭代器上使用next和prev运算,而不是迭代整数I和j,你可以在O(n^2)中实现