博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构与算法JavaScript描述
阅读量:5324 次
发布时间:2019-06-14

本文共 1129 字,大约阅读时间需要 3 分钟。

环境:JavaScript shell

shell:提供用户使用界面的软件--图形界面shell(windows)

               --命令行shell(cmd.exe)

bash是大多数Linux系统的默认shell

JS定义变量时不加var,即使在函数内部定义也为全局变量

JS的函数作用域,JS没有块级作用域

 

二:数组

 

三:列表---抽象数据类型(ADT) 元素简单时方便      NodeList并非列表,而是DOM操作取出的集合

clear:delete操作符

 

四:栈LIFO

底层数据结构是数组

用途①数制转换---先入栈再出栈的算法

  ②回文---dad,racecar这种

 

五:队列FIFO

使用数组实现FIFO的数据结构

使用队列对数据进行排序

 

六:链表

1:JS中的数组很方便但效率低,链表可以在除了需要随机访问时代替一维数组

2:链表有一个特殊的头节点,尾部是一个NULL节点

3:设计基于对象的链表

4:双向链表

5:循环链表

 

七:字典--键值对应的数据结构

1:定义字典类

JS中的关联数组[字符]----[]中括号的方式使用属性

①object类的keys()方法可返回传入参数中存储的所有键

②for(each)?(...in...)

 

八:散列--插入,删除,取用数据都很快,但查找效率低下

通过散列函数将键映射为一个数字索引

哈希表就是散列表---数组长度质数且大于100

①选择一个散列函数---键为整型---以数组的长度对键取余(最简单)---除留余数法

          ---键是字符串类型---①用ASCII码相加再取余---问题①不均匀②散列值相等---碰撞

                 ---②霍纳算法,ASCII码求和时每次乘一个质数(较小如31)

②碰撞处理---①开链法---利用二维数组存放多个数据

     ---②线性探测法---碰撞时存入下一个位置(直到有空位为止)

     当数组大小为待存储数据个数1.5倍时,使用开链法,更大则使用线性探测法

 

九:集合---无序且独一无二的成员

 

十:二叉树和二叉查找树---查找,添加,删除均非常高效

树---分层结构---自上而下

二叉树子节点不超过两个,二叉查找树则小的在左边大的在右边

遍历二叉树:中序,先序,后序

 

十一:图和图的算法

1:图由边的集合以及顶点的集合组成 顶点有权重,称为成本

2:有向图,无向图

3:搜索图:①深度优先②广度优先(按层级向下)

 

十二:排序算法

基本排序算法

1:冒泡

2:选择

3:插入

 

转载于:https://www.cnblogs.com/cndotabestdota/p/5290942.html

你可能感兴趣的文章
Objective-C 【关于导入类(@class 和 #import的区别)】
查看>>
倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-点击运行按钮进入到运行状态报错Error starting TwinCAT System怎么办 AdsWarning1823怎么办...
查看>>
【转】javascript 中的很多有用的东西
查看>>
Centos7.2正常启动关闭CDH5.16.1
查看>>
Android 监听返回键、HOME键
查看>>
Android ContentProvider的实现
查看>>
sqlserver 各种判断是否存在(表名、函数、存储过程等)
查看>>
给C#学习者的建议 - CLR Via C# 读后感
查看>>
Recover Binary Search Tree
查看>>
Java 实践:生产者与消费者
查看>>
[转]IOCP--Socket IO模型终结篇
查看>>
js 获取视频的第一帧
查看>>
各种正则验证
查看>>
观察者模式(Observer)
查看>>
python中numpy.r_和numpy.c_
查看>>
egret3D与2D混合开发,画布尺寸不一致的问题
查看>>
freebsd 实现 tab 命令 补全 命令 提示
查看>>
struts1和struts2的区别
查看>>
函数之匿名函数
查看>>
shell习题第16题:查用户
查看>>