【发布时间】:2020-11-06 08:49:08
【问题描述】:
我编写了一个算法来读取一个文本文件并将里面的内容提取到两个数组中,然后排序。该程序正在运行,但我对计算时间复杂度感到困惑。只是需要有人澄清一下。
假设我有两个函数,一个 main 和一个 helper。
辅助函数
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)
- 在文本文件中读取程序
- 将第 1 行推入阵列 A,将第 2 行推入阵列 B
- 'for loop' 使用外部 'if' 验证数组 B 数组整数
- 对数组 A 和数组 B 执行插入排序
据我所知,在计算 Big-O 或操作数之前,我必须让数据数为“n”。现在,显然这里有两个数据点 - 一个用于数组 A,一个用于数组 B。
所以,数组 A = n,数组 B = m。
但是,我不确定辅助函数中的数据数量应该使用“n”还是“m”。同样对于嵌套的while循环,如果数据的数量也应该使用'n'或'm'。
我尽力解释了我在理解这个时间复杂度方面的困难以及我的程序的简化形式(实际的程序有大量的循环......)。希望有人能理解我的意思并提供一些澄清,否则我会进一步修改,看看我是否可以更清楚。谢谢!
编辑:在为我的算法找到 Big-O 之前,我需要计算操作数。
【问题讨论】:
标签: algorithm time-complexity big-o computation-theory