像往常一样阅读资料时,我想到了这个问题。 如果我有一个像下面这样的字符数组初始化,这个语句的时间复杂度是多少?
char array[] = {'a','b','c','d','e'};
它实际上会执行5次来分配每个变量吗?正如我们在循环中所做的那样。如果假设成立,为什么会这样?
最佳答案
根据声明发生的位置和编译器的智能,它可能是 O(1) 或 O(n)。一些情况:
- 全局声明,智能编译器会把它放在数据段,已经初始化,因此O(1)
- 局部声明,如果被证明只能被智能编译器读取,它可能像上面那样,加上对数组的引用赋值,但仍然是 O(1)
- 本地声明,读写,可以是存储分配 + 5 赋值(显然是 O(n) 或存储分配 + 数组数据复制(如 2,但数据被复制而不仅仅是引用)。后者可以是 O (1) 使用矢量化代码(好吧……或多或少,因为它取决于很多东西)
关于c - 字符数组初始化的时间复杂度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8677019/