1.为什么数组都从0开始编号?
数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。
从数组存储的内存模型上来看,下标最确切的定义应该是偏移。
计算 a[k]的内存地址只需要用这个公式:
a[k]_address = base_address + k * type_size
如果数组从 1 开始计数,那我们计算数组元素 a[k]的内存地址就会变为:
a[k]_address = base_address + (k-1)type_size*
所以,为了减少一次减法操作,数组选择了从 0 开始编号,而不是从 1 开始。另外,也有历史原因,C 语言用 0 开始计数数组下标,之后的 Java、JavaScript 等高级语言都效仿了 C 语言,当然很多语言中数组也并不是从 0 开始计数的,比如 Matlab。甚至还有一些语言支持负数下标,比如 Python
2.数组和链表的区别?
链表适合插入、删除,时间复杂度 O(1);
数组适合查找,数组支持随机访问,根据下标随机访问的时间复杂度为 O(1)
- —— 定期更新有质量的知识点,欢迎跟踪
网友评论