数据结构与算法:
数据结构就是在计算机中存储和组织数据的方式。常见的数据结构很多,比如有数组、栈、队列、链表、散列表、树、图、堆等等。每一种都有其对应的应用场景,不同的数据结构的不同操作性能是不同的,在开发中要根据具体的需求来选择。
算法可以理解为解决问题的步骤逻辑。不同算法的效率是不同的。
生活中的数据结构与算法:
程序是对现实生活的抽象。
生活中的数据结构和算法,比如有:图书馆图书的摆放,为了更加方便的放置新的书籍和在需要的时候能购找到书籍,需要合理的组织数据,并且通过高效的算法插入和查询数据。
数组(有些编程语言中称为列表):
要存储多个元素,数组可能是最常用的数据结构。几乎每种编程语言都有默认实现数组结构。
数组结构的优点:通过下标值存取元素效率非常高。
数组结构的缺点:
-
数组的创建通常需要申请一段连续的内存空间(一整块的内存)。
-
数组的大小是固定的,如果当前数组不能满足容量需求,那么久需要进行扩容(虽然 JS 中数组的大小不是固定的,但是大多数编程语言都是固定的)。
扩容:一般情况是申请一个更大的数组,然后将当前数组中的元素复制过去。
-
在一个数组中进行插入和删除元素的成本很高,需要进行大量元素的位移。(比如:一个数组中有 10000 个元素,想要在第 100 位插入一个元素,那么原先在第 100 位及之后的元素都需要向后挪动一位)。
在 JS 中,对数组结构的封装已经非常完善了,因此就不再进行对 Array 的封装了。