JavaScript数据结构与算法总结

文章目录

  • 前言
  • 线性结构
    • 数组
    • 链表
    • 队列
  • 非线性结构
    • 集合
    • 字典和散列表
      • 字典
      • 散列表
      • 二叉树
      • 平衡树
  • 排序
  • 查找
  • 动态规划
  • 分治算法
  • 回溯算法
  • 贪心算法
  • 启发式算法


JavaScript基础知识
JavaScript数据结构与算法总结一——线性结构(数组、链表、栈、队列)
JavaScript数据结构与算法总结二——非线性结构(集合、字典和散列表)
JavaScript数据结构与算法总结三——树(二叉搜索树、平衡树:AVL树&红黑树)
JavaScript数据结构与算法总结四——图(深度优先、广度优先、最短路径:Dijkstra 算法 Floyd-Warshall 算法、最小生成树:Prim 算法 Kruskal 算法)
JavaScript数据结构与算法总结五——排序和查找(冒泡排序 选择排序 插入排序 快速排序 堆排序 顺序查找 二分查找 插值查找)
用JS简单实现一个群智能算法(布谷鸟算法(CS))


前言

JavaScript可以直接写入 HTML 输出流,也可以直接使用node.js。

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Documenttitle>
head>

<body>
    <script>
    	var testArray = [77, 41, 31, 43, 11, 33, 21];
    	document.write(testArray);//写入HTML输出流
        print(testArray);//写入打印机,会直接唤起打印机,可以直接打印成纸质文稿
        console.log(testArray);//输出到控制台
    script>
body>
html>

node.js控制台默认输入是字符串类型,若需要数字类型需要进行转化。

parseInt转换成数字


线性结构

数组

链表

队列


非线性结构

集合

字典和散列表

字典

散列表


二叉树

平衡树

BST 存在一个问题:取决于你添加的节点数,树的一条边可能会非常深;也就是说,树的一
条分支会有很多层,而其他的分支却只有几层,这会在需要在某条边上添加、移除和搜索某个节点时引起一些性能问题。

AVL 树是一种自平衡二叉搜索树,意思是任何一个节点左右两侧子树的高度之差最多为 1。

类型 平衡度 调整频率 适用场景
AVL树 查询多,增/删少
红黑树 增/删频繁

AVL树

红黑树


## 图 图由边的集合及顶点的集合组成。

边由顶点 对 (v1,v2) 定义,v1 和 v2 分别是图中的两个顶点。顶点也有权重,也称为成本。如果一个 图的顶点对是有序的,则可以称之为有向图。在对有向图中的顶点对排序后,便可以在两 个顶点之间绘制一个箭头。有向图表明了顶点的流向。


排序

查找


动态规划

分治算法

回溯算法

贪心算法


启发式算法

你可能感兴趣的:(算法与数据结构,数据结构,javascript)