数据结构与算法,前端JavaScript学习
数据结构与算法,JavaScript学习
H千面
菜得出奇的菜鸡成长史...
展开
-
16-排序
时间复杂度:稳定性:不稳定排序算法:选择排序、快速排序、希尔排序、堆排序稳定排序算法:而冒泡排序、插入排序、归并排序和基数排序原创 2020-12-31 01:24:19 · 191 阅读 · 0 评论 -
19-动态规划----JavaScript数据结构与算法学习
该系列博客索引目录:数据结构与算法—前端JavaScript学习动态规划参考:算法分析与设计-贪心&动归漫画:什么是动态规划?【数据结构与算法】 DP 动态规划 介绍介绍:(随便看看,不看也行,看不懂很正常,看几个示例就懂了)动态规划是一种编程思想,主要用于解决最优解类型的问题。其思路是为了求解当前的问题的最优解,使用子问题的最优解,然后综合处理,最终得到原问题的最优解。但是也不是说任何最优解问题都可以使用动态规划,使用dp的问题一般满足下面的两个特征:(1)最优子结构,就是指问转载 2020-12-21 15:01:46 · 212 阅读 · 0 评论 -
18-递归模式----JavaScript数据结构与算法学习
该系列博客索引目录:数据结构与算法—前端JavaScript学习1. 前言算法为王。排序算法博大精深,前辈们用了数年甚至一辈子的心血研究出来的算法,更值得我们学习与推敲。因为之后要讲有内容和算法,其代码的实现都要用到递归,所以,搞懂递归非常重要。2. 定义方法或函数调用自身的方式称为递归调用,调用称为递,返回称为归。简单来说就是:自己调用自己。现实例子:周末你带着女朋友去电影院看电影,女朋友问你,咱们现在坐在第几排啊 ?电影院里面太黑了,看不清,没法数,现在你怎么办 ?于是你就原创 2020-12-21 15:00:55 · 144 阅读 · 0 评论 -
17-常用高级排序----JavaScript数据结构与算法学习
该系列博客索引目录:数据结构与算法—前端JavaScript学习前面我们讲了一些简单排序: 冒泡排序 - 选择排序 - 插入排序, 并且也分析了它们的效率.这一章节, 我们讲一些高级排序: 希尔排序 - 快速排序. 相对于简单排序, 它们的效率会更高一些.一. 希尔排序希尔排序是插入排序的一种高效的改进版, 并且效率比插入排序要更快.希尔排序的介绍希尔排序的历史背景:希尔排序按其设计者希尔(Donald Shell)的名字命名,该算法由1959年公布。我们知道, 优先的排序算法转载 2020-12-21 14:58:35 · 148 阅读 · 0 评论 -
15-什么是图算法----JavaScript数据结构与算法学习
该系列博客索引目录:数据结构与算法—前端JavaScript学习在上一个章节, 我们主要是认识一下图, 并且在程序中通过代码表示了图.这一章, 我们来学习一些图相关的算法, 我们说过: 数据结构和算法是脱离不开关系的.一. 图的遍历和其他数据结构一样, 我们需要可以通过某种算法来遍历结构中每一个数据.这样可以保证, 在我们需要时, 通过这种算法来访问某个顶点的数据以及它对应的边.遍历的方式图的遍历思想图的遍历算法的思想在于必须访问每个第一次访问的节点, 并且追踪有哪些顶点还没转载 2020-12-21 14:50:13 · 154 阅读 · 1 评论 -
14-什么是图结构----JavaScript数据结构与算法学习
该系列博客索引目录:数据结构与算法—前端JavaScript学习在计算机程序设计中, 图也是一种非常常见的数据结构.但是, 图论其实是一个非常大的话题, 我们通过本章的学习来认识一下关于图的一些内容以及图的抽象数据类型.一. 图的概念我们先来认识一下什么是图, 另外图中也有很多其他的概念, 比如: 顶点/边/有向图/无向图等等.什么是图?图是一种与树有些相似的数据结构.实际上, 在数学的概念上, 树是图的一种.我们知道树可以用来模拟很多现实的数据结构, 比如: 家谱/公司组织架原创 2020-12-21 14:35:37 · 314 阅读 · 0 评论 -
12-什么是二叉搜索树----JavaScript数据结构与算法学习
该系列博客索引目录:数据结构与算法—前端JavaScript学习前面, 我们学习了关于树的一些概念以及比较重要的二叉树的特性.现在, 我们为二叉树再增加一个限制, 那么就可以形成一个二叉搜索树.一. 二叉搜索树的概念我们先来简单理解一下什么是二叉搜索树.什么是二叉搜索树?二叉搜索树(BST,Binary Search Tree),也称二叉排序树或二叉查找树二叉搜索树是一颗二叉树, 可以为空;如果不为空,满足以下性质:非空左子树的所有键值小于其根结点的键值。非空右子树的所有原创 2020-12-21 14:33:47 · 173 阅读 · 0 评论 -
11-什么是树结构----JavaScript数据结构与算法学习
该系列博客索引目录:数据结构与算法—前端JavaScript学习树也是一种非常常用的数据结构, 特别是二叉树.二叉树是程序中一种非常重要的数据结构, 它的优势是前面介绍的数据结构所没有的.一. 树的概念我们先来简单的认识一些关于树的概念, 再来认识特殊的二叉树以及它的相关编码工作.树是什么?真实的树:相信每个人对现实生活中的树都会非常熟悉img我们来看一下树有什么特点?树通常有一个根. 连接着根的是树干.树干到上面之后会进行分叉成树枝, 树枝还会分叉成更小的树枝原创 2020-12-21 14:32:04 · 188 阅读 · 0 评论 -
10-什么是哈希表实现----JavaScript数据结构与算法学习
该系列博客索引目录:数据结构与算法—前端JavaScript学习前面, 我们使用了大量的篇幅来解析哈希表的理论知识.现在, 我们进入代码的实施阶段, 但是实施之前, 先来深入一个比较重要的话题: 哈希函数.一. 哈希函数讲了很久的哈希表理论知识, 你有没有发现在整个过程中, 一个非常重要的东西: 哈希函数呢?我们这里来探讨一下, 设计好的哈希函数应该具备哪些优点.快速的计算好的哈希函数应该尽可能让计算的过程变得简单, 应该可以快速计算出结果.哈希表的主要优点是它的速度, 所以在速原创 2020-12-21 14:31:11 · 121 阅读 · 0 评论 -
09-什么是哈希表理论----JavaScript数据结构与算法学习
该系列博客索引目录:数据结构与算法—前端JavaScript学习哈希表是一种非常重要的数据结构, 很多学习编程的人一直搞不懂哈希表到底是如何实现的.在这一章节中, 我们就一点点来实现一个自己的哈希表. 通过实现来理解哈希表背后的原理和它的优势.一. 认识哈希表我们还像其他数据结构一样, 先来简单的认识一下哈希表.哈希表介绍哈希表是一种非常重要的数据结构, 几乎所有的编程语言都有直接或者间接的应用这种数据结构.哈希表通常是基于数组进行实现的, 但是相对于数组, 它也很多的优势:它可原创 2020-12-13 23:19:33 · 157 阅读 · 0 评论 -
08-什么是字典结构----JavaScript数据结构与算法学习
该系列博客索引目录:数据结构与算法—前端JavaScript学习数组-集合-字典是几乎编程语言都会默认提供的数据类型.在JavaScript中默认提供了数组, 但没有提供集合和字典(ES6中增加了), 在上一章节中, 我们自己通过对象实现了一下集合.本章, 我们还是基于对象实现一下字典.一. 认识字典字典的介绍生活中的字典中文字典我们可以根据拼音去查找汉字, 并且找到汉字对应的词以及解释.英文字典也是类似, 根据英文字母找到对应的单词, 再查看其翻译和应用场景.很多编程语言中都有字原创 2020-12-13 23:17:37 · 280 阅读 · 0 评论 -
07-什么是集合结构----JavaScript数据结构与算法学习
一. 集合介绍我们先来简单认识一下集合的特点.集合的特点集合通常是由一组无序的, 不能重复的元素构成.和数学中的集合名词比较相似, 但是数学中的集合范围更大一些, 也允许集合中的元素重复.在计算机中, 集合通常表示的结构中元素是不允许重复的.看成一种特殊的数组其实集合你可以将它看成一种特殊的数组.特殊之处在于里面的元素没有顺序, 也不能重复.没有顺序意味着不能通过下标值进行访问, 不能重复意味着相同的对象在集合中只会存在一份.集合的实现我们要像之前学习其他数据结构转载 2020-12-13 23:15:21 · 263 阅读 · 1 评论 -
06-什么是双向链表----JavaScript数据结构与算法学习
一. 认识双向链表双向链表介绍单向链表:只能从头遍历到尾或者从尾遍历到头(一般从头到尾)也就是链表相连的过程是单向的. 实现的原理是上一个链表中有一个指向下一个的引用.单向链表有一个比较明显的缺点:我们可以轻松的到达下一个节点, 但是回到钱一个节点是很难的. 但是, 在实际开发中, 经常会遇到需要回到上一个节点的情况举个例子: 假设一个文本编辑用链表来存储文本. 每一行用一个String对象存储在链表的一个节点中. 当编辑器用户向下移动光标时, 链表直接操作到下一个节点即可. 但是当用转载 2020-12-13 23:13:57 · 169 阅读 · 0 评论 -
05-什么是链表结构----JavaScript数据结构与算法学习
链表和数组一样, 可以用于存储一系列的元素, 但是链表和数组的实现机制完全不同.这一章中, 我们就来学习一下另外一种非常常见的用于存储数据的线性结构: 链表.一. 认识链表我们先来认识一下链表, 看一下它大概的机制和原理, 以及和数组的对比.链表和数组数组:要存储多个元素,数组(或列表)可能是最常用的数据结构。我们之前说过, 几乎每一种编程语言都有默认实现数组结构, 这种数据结构非常方便,提供了一个便利的[]语法来访问它的元素。但是数组也有很多缺点:数组的创建通常需要申请一段.转载 2020-12-13 23:12:02 · 102 阅读 · 0 评论 -
04-什么是队列结构----JavaScript数据结构与算法学习
该系列博客索引目录:数据结构与算法—前端JavaScript学习一. 认识队列我们也先来认识一下队列, 看看它的特点和应用场景等.队列结构队列(Queue),它是一种运算受限的线性表,先进先出(FIFO First In First Out)队列是一种受限的线性结构受限之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作生活中类似的队列结构生活中类似队列的场景就是非常多了, 比如在电影院, 商场, 甚至是厕所排队.优先排队的人, 优先转载 2020-11-27 17:11:44 · 314 阅读 · 1 评论 -
03-什么是栈结构---JavaScript数据结构与算法学习
该系列博客索引目录:数据结构与算法—前端JavaScript学习栈也是一种非常常见的数据结构, 并且在程序中的应用非常广泛.一. 认识栈结构我们先来简单认识一下栈结构, 它的特点和应用场景等.栈结构数组我们知道数组是一种线性结构, 并且可以在数组的任意位置插入和删除数据.但是有时候, 我们为了实现某些功能, 必须对这种任意性加以限制.而栈和队列就是比较常见的受限的线性结构, 我们先来学习栈结构.栈(stack),它是一种运算受限的线性表,后进先出(LIFO)LIFO转载 2020-11-27 14:00:18 · 138 阅读 · 0 评论 -
数据结构与算法索引---前端JavaScript学习
来源:网易云课堂自己添了部分笔记学习资料:(1)JavaScript教程–菜鸟教程 https://www.runoob.com/js/js-objects.html(2)JavaScript Array 对象(3)ECMAScript 6 入门–阮一峰(4)原创 2020-11-27 10:48:33 · 170 阅读 · 0 评论 -
02-什么是数组结构--JavaScript学习
文章目录一. 数组的基本使用为什么使用数组?创建和初始化数组数组长度和遍历数组二. 数组的常见操作添加元素删除元素任意位置三. 数组的其他操作常见方法数组合并迭代方法reduce方法来源:网易云课堂自己添了部分笔记几乎所有的编程语言都原生支持数组类型,因为数组是最简单的内存数据结构。数组通常情况下用于存储一系列同一种数据类型的值。但在JavaScript里,也可以在数组中保存不同类型的值。但我们还是要遵守最佳实践,别这么做(大多数语言都没这个能力)。一. 数组的基本使用事实上, 如果你之原创 2020-11-26 23:36:22 · 370 阅读 · 0 评论