Algorithm 多变量的时间复杂度&;功能
我已经编写了一个算法来读取文本文件,并将其中的内容提取到两个数组中,然后进行排序。程序正在运行,但我对计算时间复杂度感到困惑。只是需要有人澄清一下 假设我有两个函数,一个main和一个helper 辅助函数Algorithm 多变量的时间复杂度&;功能,algorithm,time-complexity,big-o,computation-theory,Algorithm,Time Complexity,Big O,Computation Theory,我已经编写了一个算法来读取文本文件,并将其中的内容提取到两个数组中,然后进行排序。程序正在运行,但我对计算时间复杂度感到困惑。只是需要有人澄清一下 假设我有两个函数,一个main和一个helper 辅助函数 insertion(int array[], int length) ... 主要功能 int main() while(...) // this while loop read the input text file and push integer into vecto
insertion(int array[], int length)
...
主要功能
int main()
while(...) // this while loop read the input text file and push integer into vector
...
while(...)
...
if(...)
for(...) // this for loop validates array B only
insertion(arrayA, lengthA)
insertion(arrayB, lengthB)
编辑:在为我的算法找到大O之前,我需要计算运算次数。我知道在您阅读文件后,将有数组A和B。 如果m和n很接近,那么你可以说m=n。否则,你选择最大的一个,然后说它是n 然后你读n两次,n+n=2,但在大O中,你可以去掉常数,这时你有O(n)时间 如果validate只通过数组B传递一次,那么你说复杂度时间是3n,但3仍然是一个常数,那么时间复杂度仍然是O(n) 但是,插入排序最糟糕的情况是O(n^2)。做两次,n^2+n^2=2*n^2,2是一个常数,所以插入排序的时间取O(n^2) 最后,你有O(n)+O(n^2)。因为它是一个大符号,所以成本最高的部分才是真正重要的部分:O(n^2)是您的复杂性 例如,如果使用插入排序n次,则将有O(n(n^2))次,即O(n^3) 计算机每秒执行10^9次操作。这么小的n并不重要
如果你不确定n和m是否接近,我们假设0