js2-js中的数据结构

1、什么是数据结构

数据结构是计算机存储、组织数据的方式。

数据结构意味着接口或封装,一个数据结构可被视为两个函数之间的接口,或者是由数据类型联合组成的存储内容的访问方法封装。

每天的编码中都会用到数据结构,其中数组是最简单的内存数据结构。

常见的数据结构有:

数组Array

栈Stack

队列Queue

链表Linked List

字典

散列表Hash table

树Tree

图Graph

堆Heap

2、数组Array

数组是最基本的数据结构,很多语言都支持数组。

数组是使用一块连续的内存空间保存数据,保存的数据的个数在分配内存的时候就确定了。

日常生活中,经常使用的列表:待办事项列表,购物清单等。

计算机程序也在使用列表,在下面的条件下,选择列表作为数据结构显得尤为有用。

数据结构比较简单。

不需要在一个长序列中查找元素,或者对其进行排序。

反之,数组结构非常复杂,列表的作用就没有那么大了。

3、栈Stack

栈是一种遵循后进先出(LIFO)原则的有序集合

在栈里,新元素都接近栈顶,旧元素都接近栈底。

每次加入新的元素和拿走元素都在顶部操作。

4、队列

队列遵循先进先出(FIFO,也叫先来先服务)原则的一组有序的项

队列在尾部添加元素,并从顶部移除元素

5、链表

链表也是一种列表,已经设计了数组,为什么还需要链表呢?

javascript中数组的主要问题是:它们被设计成了对象。

与其它语言的数组相比,效率很低

如果你发现数组在实际使用时很慢,就可以考虑用链表替代它。

使用条件:

链表几乎可以用在任何可以使用一维数组的情况中。

如果需要随机访问,数组仍然是更好的选择。

6、字典

字典是一种以键-值对存储的数据结构,js中的Object类就是以字典的形式设计的。JavaScript可以通过实现字典类,让这种字典对象使用起来更加简单,字典可以实现对象拥有的常见功能,并相应拓展自己想要的功能,而对象在javascript编写中随处可见,所以字典的作用也就异常明显。

7、散列表

也称哈希表,特点是在散列表上插入、删除和取用数据都非常快。

为什么设计哈希表这种数据结构呢?

因为用数组或者链表存储数据,如果想要找到其中一个数据,需要从头进行遍历,因为不知道这个数据存储到了数组的哪个位置。

散列表在javascript中可以基于基础数组进行设计。

数组的长度是预先设定的,所有元素根据和该元素对应的键,保存在数组的特定位置,这里的键和对象的键是类型的概念。

使用散列表存储数组时,通过一个散列函数将键映射为一个数字,这个数字的范围是0到散列表的长度。

即使使用一个高校的散列函数,依然存在将两个键映射为同一个值的可能,这种现象叫做碰撞,常见碰撞的处理方法有:开链法和线性探测法。

使用条件:用于数据的插入、删除和取用,不适用于查找数据。

相关推荐
strive-debug2 小时前
上篇:《排序算法的奇妙世界:如何让数据井然有序?》
数据结构·算法·排序算法
PHASELESS4112 小时前
Java堆结构深度解析:原理、实现与应用全指南
java·开发语言·数据结构
杀神lwz3 小时前
数据结构和算法(六)--栈&队列&堆
数据结构
ん贤3 小时前
图论基础理论
c语言·数据结构·c++·算法·图论
小哲会魔法4 小时前
冒泡排序、插入排序、快速排序、堆排序、希尔排序、归并排序
数据结构·算法·排序算法
Dreams_l5 小时前
顺序表(Arraylist)和链表(Linkedlist)
数据结构·链表
Dominic_Holmes6 小时前
代码随想录算法训练营Day30 | 01背包问题(卡码网46. 携带研究材料)、Leetcode416.分割等和子集
数据结构·python·算法·leetcode
Dovis(誓平步青云)10 小时前
【数据结构】励志大厂版·初阶(复习+刷题):线性表(顺序表)
c语言·数据结构·经验分享·笔记·学习·算法·学习方法
Brookty11 小时前
【算法】归并排序
数据结构·算法·排序算法
星星火柴93613 小时前
数据结构:哈希表 | C++中的set与map
数据结构·c++·笔记·算法·链表·哈希算法·散列表