数组基础知识

1. 数组的空间与时间效率

数组占据一块连续的内存并按照顺序存储数据。

空间效率不好:创建数组时,需要首先制定数组容量的大小,然后根据大小分配内存。即使我们只在数组中存储一个数字,也要为所有的数据预先分配内训。

时间效率很高:数组中的内存是连续的,可以根据下表在O(1)时间读写任何元素。

                         可以根据此优点,使用数组实现哈希表。每个下标及数组中该下标对应的数字组成了一个键值-值配对。

                         数组下标设为哈希表的键值(Key)

                         数组中每一个数字设为哈希表的值(Value)

                                        


2. 动态数组

为了解决数组效率不高,设计了动态数组。如C++的STL的vector.

先为数组开辟较小的空间,然后往数组中添加数据。当数据的数目超过数组的容量时,再分配一块更大的空间,把之前的数据复制到新的数组中,再把之前的内存释放,这样能减少内存的浪费。STL的vector每次扩充容量时,新的容量都是前一次的两倍。每一次扩充容量是都有大量的额外操作,对时间性能有负面影响,因此使用动态数组是要尽量减少改变数组容量大小的次数。


3. 数组与指针

声明一个数组时,其数组的名字也是一个指针,该指针指向数组的第一个元素。该指针指向数组的第一个元素。

当数组作为函数的参数进行传递时,数组就自动退化为同类型的指针。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值