数据结构与算法
文章平均质量分 92
WXDEE
前端进阶程序媛,喜欢钻研,有代码洁癖,期待更好的自己,一起加油呀
展开
-
JavaScript数组排序
数组排序的方法有很多种,但我个人认为只需掌握以下两种就可以了,一是sort()方法,二是冒泡排序。1.sort()方法 1.1无参数 a. 该方法无参数时是按照ASCII字符顺序进行升序排序的。常用字符的ASCII值如下: A–Z: 65–90;a–z:97–122;0–9:48–57。 b. sort方法是一位一位比较的。例如,数组[4,21,37,9],输出结果是[21,37,4,9]原创 2017-08-12 11:31:21 · 257 阅读 · 0 评论 -
查找
一、线性表的查找1.顺序查找从表的一端开始,依次将记录的关键字和给定的值进行比较,若某个记录的关键字和给定值相等,则查找成功;反之,若扫描整个表后,仍未找到关键字和给定值相等的记录,则查找失败。2.折半查找又称二分查找,要求线性表必须采用顺序存储结构,并且表中元素按关键字有序排列。 查找过程为: a. 如果给定值和中间记录的关键字相等,则查找成功。 b. 如果给定值大于或者小于中间记录的关键字原创 2017-10-10 18:40:12 · 1313 阅读 · 0 评论 -
插入排序与交换排序
1.插入排序插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。 a. 直接插入排序 算法时间复杂度O(n^2),算法简便稳定,适用于连式存储、顺序存储。代码实现如下:function insertSort () { var arr=arguments; for(var i=1;i<arr.length;i++){ if(a原创 2017-10-10 19:35:53 · 800 阅读 · 0 评论 -
图
1.定义图(Graph)是由两个集合V和E组成,记为G=(V,E),其中V是顶点的有穷非空集合,E是V中顶点偶对的有穷集合,这些顶点偶对称为边。V(G)和E(G)通常分别表示图G的顶点集合和边集合,E(G)可以为空集。若E(G)为空,则图G只有顶点没有边。 对于图G,若边集E(G)为有向边的集合,则称该图为有向图;若边集E(G)为无向边的集合,则称该图为无向图。 在有向图中,顶点对是有序的原创 2017-09-25 08:46:00 · 604 阅读 · 0 评论 -
栈和队列
1.栈Stack1、定义 栈是限定仅在表尾进行插入或删除操作的线性表。对栈来说,表尾端称为栈顶,表头端称为栈底。不含元素的空表称为空栈。 栈的修改是按后进先出的原则进行的。因此,栈又称为后进先出的线性表。模型如下:2、顺序栈的表示 顺序栈指利用顺序存储结构实现的栈,即利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素。设指针top指示栈顶元素在顺序栈中的位置,指针base指示栈底元素在顺原创 2017-09-12 09:51:45 · 337 阅读 · 0 评论 -
线性表
1.定义由n个数据特性相同的元素构成的有限序列称为线性表。元素个数n定义为线性表的长度,n=0时称为空表。 对于非空线性表或线性结构,其特点是: 1、存在唯一一个被称作“第一个”的数据元素; 2、存在唯一一个被称作“最后一个”的数据元素; 3、除第一个以外,结构中的每个元素均只有一个前驱; 4、除最后一个以外,结构中的每个元素均只有一个后继。2.线性表的顺序存储表示用一组地址连续的存储单元原创 2017-09-11 19:24:15 · 390 阅读 · 0 评论 -
JavaScript快速排序
快速排序代码如下: <script type="text/javascript"> var arr = [3, 23, 66, 32, 2, 77, 45, 87, 64, 34, 33]; console.log(arr); function quick_sort(arr,low,high) { if(low < hig原创 2017-09-10 21:05:27 · 254 阅读 · 0 评论 -
哈夫曼树与哈夫曼编码
1.定义路径:从树中一个结点到另一个结点之间的分支构成这两个结点之间的路径。 路径长度:路径上的分支数目称作路径长度。 树的路径长度:从树根到每一结点的路径长度之和。 权:赋予某个实体的一个量,是对实体的某个或某些属性的数值化描述。 结点的带权路径长度:从该结点到树根之间的路径长度与结点上权的乘积。 树的带权路径长度:树中所有叶子结点的带权路径长度之和。 哈夫曼树:假设有m个权值{w1,原创 2017-09-13 19:23:46 · 6098 阅读 · 0 评论 -
树和二叉树
1.树1、定义 树是n(n>=0)个结点的有限集,它或为空树(n=0),或为非空树,对于非空树T: a. 有且仅有一个称之为根的结点; b. 除根节点以外的其余结点可分为m个互不相交的有限集,其中每一个集合本身又是一棵树,并且称为根的子树。2、树的基本术语 结点:树中的一个独立单元。 结点的度:结点拥有的子树数称为结点的度。 树的度:树的度是树内各结点度的最大值。 叶子:度为0的结点称原创 2017-09-13 17:24:02 · 213 阅读 · 0 评论 -
算法复杂度简析
1.时间复杂度 1.1 时间频度 一个算法中语句的执行次数称为语句频度或时间频度。记为T(n)。n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化 1.2 定义 一般情况下,算法中基本语句重复执行的次数是问题规模n的某个函数,用T(n)表示。若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)原创 2017-08-08 20:38:32 · 490 阅读 · 0 评论 -
基本数据类型 && 引用数据类型
一、基本数据类型基本数据类型:Number、String、Boolean、Null、 Undefined、Symbol(ES6)。基本数据类型是指存放在栈中的简单数据段,数据大小确定,内存空间大小可以分配,它们是直接按值存放的,所以可以直接按值访问。二、引用数据类型引用数据类型:Object(在JS中除了基本数据类型以外的都是对象,数据是对象,函数是对象,正则表达式是对象)。引用类型是存...原创 2019-08-14 17:40:34 · 655 阅读 · 0 评论