zoukankan      html  css  js  c++  java
  • 数据结构与算法JavaScript描述

    环境: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:插入

    cncncn
  • 相关阅读:
    《TCP/IP详解》读书笔记
    更改vsts源代码绑定服务器地址方法
    t-sql或mssql怎么用命令行导入数据脚本
    t-sql中字符串前加N代表什么意思
    C#连接mariadb代码及方式
    sp_executesql动态执行sql语句并将结果赋值给一变量
    mariadb配置允许远程访问方式
    将DataTable转换为List,将List转换为DataTable的实现类
    SQL update select语句
    怎么区分MSSQL中nvarchar和varchar的区别?
  • 原文地址:https://www.cnblogs.com/cndotabestdota/p/5290942.html
Copyright © 2011-2022 走看看