c - 字符数组初始化的时间复杂度是多少?

标签 c time-complexity

像往常一样阅读资料时,我想到了这个问题。 如果我有一个像下面这样的字符数组初始化,这个语句的时间复杂度是多少?

char array[] = {'a','b','c','d','e'};

它实际上会执行5次来分配每个变量吗?正如我们在循环中所做的那样。如果假设成立,为什么会这样?

最佳答案

根据声明发生的位置和编译器的智能,它可能是 O(1) 或 O(n)。一些情况:

  1. 全局声明,智能编译器会把它放在数据段,已经初始化,因此O(1)
  2. 局部声明,如果被证明只能被智能编译器读取,它可能像上面那样,加上对数组的引用赋值,但仍然是 O(1)
  3. 本地声明,读写,可以是存储分配 + 5 赋值(显然是 O(n) 或存储分配 + 数组数据复制(如 2,但数据被复制而不仅仅是引用)。后者可以是 O (1) 使用矢量化代码(好吧……或多或少,因为它取决于很多东西)

关于c - 字符数组初始化的时间复杂度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8677019/

相关文章:

c++ - 3D 指针段错误

在 C++ 中将字符串的某些部分转换为 int/double

java - 在 Java 中将字符串集合复制到另一个字符串的时间复杂度

algorithm - 深度快速排序的复杂性

Python 列表前置时间复杂度

algorithm - 算法时间复杂度总是 O(1) 优于 O(n)?

c - 先进先出服务器程序

c - 是否可以在编程语言 C 中仅解析一个 JSON 键/字段/属性

c - 函数原型(prototype)应该总是在它的头文件中吗?

algorithm - F_2 的矩阵乘法算法仅需 O(n^2.81/(log n)^0.4)。创建算法。但是怎么办?