
数据结构和算法
文章平均质量分 51
操作系统
读心悦
学的慢一点没事,只要保持学习就好。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JavaScript数组随机排序
前面已经总结了几种常见的数组排序方法:冒泡排序,选择排序等等。今天总结一下随机排序,每执行一次函数,对数组进行一次随机性的排序:代码如下:思路:在遍历数组的时候,根据数组的下标来获取一个随机数,该随机数作为随机交换的数组元素下标,再拿当前元素和该随机项交换,从而完成数组的随机排序交换函数:...原创 2022-06-09 22:44:28 · 508 阅读 · 1 评论 -
JavaScript排序算法总结
文章目录冒泡排序选择排序冒泡排序冒泡排序是比较两个相邻的元素,如果第一个元素大于或者小于第二个元素,那么就交换两个元素:function defaultCompare(a, b) { if (a === b) { return 0; } return a < b ? -1 : 1;}const { defaultCompare} = require("../utils")function bubbleSort(array, compar原创 2022-06-02 12:41:11 · 225 阅读 · 0 评论 -
JavaScript数据结构——图
文章目录图的术语图的三种表示创建Graph类图的术语图是网络结构的抽模型。是一组由边连接的节点,在二元关系中是使用图结构来表示的。相邻顶点:通过一条边连接在一起的顶点图的三种表示邻接矩阵,每一个节点都和一个整数关联,该整数作为节点的索引。邻接表,由图中每一个顶点的相邻顶点列表组成关联矩阵,矩阵的行表示顶点,列表示边创建Graph类持续更新中...原创 2022-05-29 22:13:17 · 699 阅读 · 0 评论 -
JavaScript数据结构——树
文章目录二叉树二叉搜索树insert()树的遍历中序先序后序最小节点最大节点搜索指定值一个树结构含有父子关系的节点,除了根节点外,每一个节点都一个父节点和0个或者多个子节点。如下图:根节点也是可以有多个子节点的。二叉树二叉树中的节点最多只能有两个子节点,左侧节点和右侧节点。二叉搜索树左侧节点存储的值必须比父节点小,右侧节点存储的值必须比父节点大。现在以二叉树为例,分析一下节点的信息,节点包含了存储值、指向左右两个子节点的left和right属性。如图:root是根节点,存储值为4,含有左原创 2022-05-26 00:10:41 · 533 阅读 · 0 评论 -
数据结构:散列表【源码】
文章目录散列函数之前学过数据结构:栈、队列,链表和字典。散列函数实现尽可能快地在数据结构中找到一个值,以前想查询数据结构中的一个值的时候,是需要迭代整个数据结构的。散列函数的作用是给定一个值,然后返回改的在表中的地址。在散列函数中,我们首先需要检验一个key是否是一个数字,如果是,则返回key;反之,根据key的每一个字符的ASCII码的总和。 loseloseHashCode(key) { if (typeof key === 'number') { return key原创 2022-05-23 23:58:35 · 144 阅读 · 0 评论 -
JavaScript数据结构——集合【源码】
文章目录创建集合集合运算并集交集差集子集创建集合/** * 创建一个集合类 */class Set { constructor() { // 用一个对象来存储集合元素 this.items = {} } /** * 判断一个元素是否存在于集合中,因为使用对象来存储集合元素,那就可以使用in操作符来验证元素是否是items的属性 * has(element) { * return Object.hasOwnProperty.call(th原创 2022-05-22 16:28:32 · 241 阅读 · 0 评论 -
JavaScript数据结构——字典【源码】
/** * 字典,使用键值对的格式来存储数据,字典中的每一个键值对都是唯一的。 */function defaultToString(items) { if (items === null) { return "NULL"; } else if (items === undefined) { return "UNDEFINED"; } else if (typeof items === 'string' || items instanceof String) { r原创 2022-05-23 22:52:11 · 317 阅读 · 0 评论 -
JavaScript数据结构——链表【Class实现】,源码
/** * Node类,表示需要添加到链表中的元素, * element:保存要加入链表元素的值 * next:指向链表中下一个元素的指针 */class Node { constructor(element) { this.element = element; this.next = undefined; }}const defaultEquals = (a, b) => { return a === b;}class Lin原创 2022-05-22 22:57:34 · 274 阅读 · 0 评论 -
JavaScript数据结构-栈相关操作方法
/** * 数据结构-栈 * 栈是一种遵循后进先出原则的有序集合,新添加或者待删除的元素保存在栈的同一端,称之为栈顶,另一端叫做栈底 *///创建栈//定义一个数组来保存栈的元素var items = [];/** * 声明一个类来表示栈 */function Stack() { //向栈添加元素 this.push = function(element...原创 2019-05-28 14:23:26 · 264 阅读 · 0 评论 -
链表数据结构
链表一种动态的数据结构,会按需扩容。链表存储有序的元素集合,链表的元素在内存中不是连续存放的,每一个元素是由元素本身节点和指向下一个元素的引用(指针或者是链接)构成。在访问链表的时候,需要从起点开始迭代链表,直到找到指定元素位置双向链表每个元素都有指向下一个和上一个元素的链,循环链表结构包含了链表和双向链表循环链表和链表之间的区别在于,最后一个元素指向下一个元素的指针【tail.next】不是undefined,而是指向第一个元素【head】/* * @FileName: 链表 * .原创 2021-05-10 10:50:27 · 587 阅读 · 0 评论 -
JavaScript函数声明数据结构——栈【源码】
简单记录一下JavaScript实现数据结构——栈/* * @Author: [email protected] * @Date: 2021-08-17 22:29:43 * @LastEditors: Please set LastEditors * @LastEditTime: 2021-08-17 22:39:33 * @Description: 函数声明栈 */function Stack() { let items = []; // 向栈添加元素原创 2021-08-17 22:42:22 · 252 阅读 · 0 评论 -
JavaScript实现数据结构——链表基本骨架结构【源码】
/* * @Author: [email protected] * @Date: 2021-08-23 21:53:43 * @LastEditors: Please set LastEditors * @LastEditTime: 2021-08-23 22:46:22 * @Description: 链表骨架,函数方式 */function LinkedList() { // 节点 let Node = function (element) {原创 2021-08-23 22:47:54 · 206 阅读 · 0 评论 -
数据结构-链表
链表在需要存储大量的元素时数组可能是最常用的数据结构,但是也存在一定的局限性:数组的大小是固定的,在数组的起点或者中间插入(移除元素)的成本很高,需要移动数组元素。链表是一种动态的数据结构。存储有序的元素集合,链表的元素在内存中不是连续放置的。每个链表元素是由一个元素本身的节点和一个指向下一个元素的引用(指针)组成。链表在添加或者移除元素时不需要移动元素,需要使用指针。但是在访问任何位置的...原创 2019-06-23 17:35:06 · 331 阅读 · 0 评论