数据结构和算法分析Java数据结构和算法

【数据结构与算法】数组

2020-02-16  本文已影响0人  Lee_DH

一、是什么

一种用连续内存空间,存储相同类型数据线性表数据结构

二、使用场景

三、下标访问工作原理

address[i] = base_address + i * data_type_size

四、优劣

  1. 对于无序的数组(数组只是被当做存储数据的集合),要想将某个数据插入到第k个位置,为了避免大规模的数据搬移,直接将第k位的数据搬移到数组元素最后,把新元素直接放入第k个位置
  2. 删除多个元素,为了避免内存空洞而产生的多次数据搬移操作,可以记下已经删除的数据,待最后触发一次真正的删除操作,减少数据搬移的次数

五、替代性技术

六、延伸思考

为什么编程语言中的数组是从0开始编号

从数组存储的内存模型看,下标最确切的定义应该是偏移,对于随机访问地址公式:
address[i] = base_address + i * data_type_size
如果数组从1开始计数,公式将变成:
address[i] = base_address + (i-1) * data_type_size,
对比这两个公式,发现从1开始编号,每次随机访问都多一次减法运算,对于CPU来说,多了一次减法指令

上一篇下一篇

猜你喜欢

热点阅读