数组

数组,在数据结构中,是很基础,也很常用的一个,在很多很多业务中,都能看到它的身影。数组很简单,在不同的编程语言中,操作方式,也几乎都是类似的。

那数组是什么呢?简单来说,就是在内存中分配一块连续的空间,用来存储相同类型的元素。使用索引,可以直接访问某一个元素的数据。大多数编程语言,数组的索引是从0开始的。

数组也分为一维数组,和多维数组。就像excel中的表格,一行数据,就可以看做是一个一维数组,而多行数据,就可以看做是一个多维数组。

这个是一维数组结构
p001001_array1

这个是多维数组结构
p001002_array2

关于性能方面,因为数组是固定大小,连续的内存结构,所以访问元素的速度是很快的,时间复杂度是O(1),也就是说,不用遍历,能直接找到要访问的元素,几乎不消耗什么时间。

但是插入和删除某一个元素,就不一样了,假设一个数组有10个元素,删除了第4号元素,那么,4号后面的元素,都要往前移。而插入,也需要将插入位置后面的元素,往后移动。这是数组的一个弊端。

当要插入一个元素,而原本分配的数组空间已经不够时,有些编程语言会产生数组溢出。这时,我们就需要自己写逻辑,当数组空间不足时,分配一个新的更大的数组,先将原来数组的元素复制进去,然后将新元素插入。就像你要将100个桃子放进一个盒子里,但是装着装着发现盒子不够大,这时,就需要找一个更大的盒子,将原来盒子里那些拿出来放到新盒子里,然后继续新盒子里放桃子。

对于数组的操作,有很多,例如删除头部元素、删除尾部元素、在头部添加元素、在尾部添加元素、数组切片、多个数组链接等等。有一些编程语言已经内部实现了这些方法,例如Javascript,Python等,但有一些编程语言,我们就需要在用到时自己实现,例如C语言等。

好了,数组就先介绍到这里,如果有什么问题,或者有解释不准确的地方,欢迎在下面留言,谢谢~

Author: Moeif Studio

Permalink: http://blog.moeif.com/2019/12/10/data-structure-01-array/

任何技术问题,可加微信交流,微信: ifloop

搜索并关注微信公众号 [ 萌一小栈 ] 可及时订阅最新技术文章

Comments