数据结构--数组

186 阅读2分钟

介绍

数组的特点

数组中的元素在内存中是连续存储的,且每个元素占用相同大小的内存,

读取数组中的值

存储数组的时候会计下索引为0时的内存地址,取值则通过索引计算对应内存地址。所以用索引读取的话,可以直接通过内存地址访问,时间复杂度为O(1),而对数组进行指定元素查找,需要逐个读取复杂度则为O(N),

修改数组

也正是因为连续,如果对数组进行修改(除尾部的增删),会修改整段内存区间。时间消耗比较大,最坏为O(N),也就是修改第一个元素。

练习

找到数组的中心元素

解题思路:

1.通过得到全部元素的和,即可拿到当前index值和左侧和以及右侧和,进行判断示求值。

2.中心点位置即left*2+num[index]=sum。

搜索插入位置

解题思路:二分法

1.求得数组mid值比对mid值和target,判断target落在左区间还是右区间, 2. 在左区间则right=mid右区间,则left=mid,这样先计算出索引值,再使用索引取值的时间复杂度最低。

总结延伸

1.数组和字符串是前端最常见的数据结构,字符串的很多方法和数组的一致,比如可以通过索引取第n个字符,以及length获取长度。 2.链表和数组的不同就是,非连续存储空间,索引指向对应内存分区,通过修改索引指向改变值。只改变对应索引的值,不会引起其他索引下对应分区的变化。 3.可以把栈和队列看作是特殊化的数组。栈只能先进后出,而队列是先进先出,都可以用push pop peek(直接取顶)的方法。