js数据结构与算法
qq_37200686
这个作者很懒,什么都没留下…
展开
-
js用类实现一个最小堆数据结构
一、堆插入元素 删除堆顶 获取某个元素的父元素的下标 获取某个父元素的左孩子节点的下标 获取某个父元素的右孩子节点的下标 获取堆的大小 获取堆顶二、实现class MinHeap { constructor() { // 堆以数组表示 this.heap = [] } // 插入操作 insert(val) { this.heap.push(val) this.moveUp(this.heap.length - 1) } //原创 2021-10-30 14:33:52 · 177 阅读 · 0 评论 -
用队列实现改良版的击鼓传花
游戏规则:几个朋友一起玩一个游戏, 围成一圈, 开始数数(数数时数字都是挨着的,第一个人数1,之后的人数2), 数到某个数字的人自动淘汰。淘汰的人后面再从1开始数,重复上面的游戏,直到就剩下一个人,请问剩下了谁这个可以用到对列的数据结构,整个队伍放在一个队列中,当某一个人数完之后就把他放在队列的末尾function f(nameList, num) { while (nameList.length > 1) { var queue = nameList; //内层循环原创 2020-07-07 17:21:16 · 243 阅读 · 0 评论 -
斐波那契数列的几种实现方案
一、普通递归function fib(n) { if (n < 2) { return 1; } else { return fib(n - 1) + fib(n - 2) } }二、尾递归原创 2020-06-13 19:45:54 · 183 阅读 · 0 评论 -
数组扁平化的几种方法
一、ES6新方法 Array.prototype.flat方法function myFlat(arr) { arr = arr.flat(Infinity) //扁平化的维度,可以传入其它数字,如1、2 return arr}二、数组的 Array.prototype.toString方法function myFlat(arr) { arr = arr.toString().split(',').map((item) => { return p原创 2020-06-13 15:13:02 · 215 阅读 · 0 评论 -
数据结构(C语言版)读书笔记1(基本概念和术语)
数据:所有输入到计算机中,并被计算机程序处理的符号的总称。数据元素:数据的基本单位,在计算机程序中经常被当做一个整体进行考虑和处理数据对象:性质相同的数据元素的集合,是数据的一个子集。数据结构:相互之间存在一种或多种特定关系的数据元素的集合。这种数据元素之间存在的关系称为结构四种基本结构:集合:数据元素同属于一个集合,没有其他关系线性结构:数据元素存在一对一...原创 2018-10-15 14:14:50 · 635 阅读 · 0 评论 -
数据结构与算法JavaScript描述读书笔记(基本排序算法)
前提准备//自动生成数组的函数,n:整数个数,数字在l-r之间function setData(n,l,r){ var dataStore = []; for(var i=0;i<n;i++){ dataStore[i] = Math.floor(Math.random()*(r-l+1)+l); } return dataStor...原创 2018-10-16 11:38:13 · 135 阅读 · 0 评论 -
数据结构与算法JavaScript描述读书笔记(高级排序算法)
希尔排序在插入排序的基础上,只不过比较的步长不一样,插入排序比较步长一直是1(即一个一个的比较)。希尔排序的步长第一次一般设置为gap=Math.floor(arr.length/2),之后依次将步长设置为gap/2,直到步长变为1,这个时候彻底转化成插入排测试时间普通排序算法10万条数据就已经时间很久了,但是希尔排序都可以处理千万条数据,时间大概为2000毫秒,一亿条数据没有测试...原创 2018-10-16 15:50:20 · 147 阅读 · 0 评论 -
数据结构与算法JavaScript描述读书笔记3(检索算法)
列表中查找数据有两种方法:顺序查找和二分查找。顺序查找使用于元素随机排列的列表;二分查找适用于元素已排序的列表。二分查找效率高,但是必须花费额外时间将列表中的元素排序顺序查找时间复杂度:O(n)function seqSearch(arr,data){ for(var i=0;i<arr.length;i++){ if(arr[i] == data){...原创 2018-10-16 19:17:44 · 111 阅读 · 0 评论 -
数据结构与算法JavaScript描述读书笔记(js实现链表-单链表)
单链表//创建构造函数创建节点function Node(element){ this.element = element; this.next = null;}//链表的构造函数 function LList(){ this.head = new Node('head'); this.insert = insert; this.remove ...原创 2018-10-17 12:29:35 · 130 阅读 · 0 评论 -
数据结构与算法JavaScript描述读书笔记(js实现链表-双向链表)
双向链表双向链表的 remove() 方法比单向链表的效率更高,因为不需要再查找前驱节点了//创建构造函数创建节点function Node(element){ this.element = element; this.next = null; this.previous = null; this.findLast = findLast; thi...原创 2018-10-17 16:47:30 · 122 阅读 · 0 评论 -
数据结构与算法JavaScript描述读书笔记(js实现链表-循环链表)
循环链表循环链表同单链表,只需设置head.next = head就可以实现循环链表其它方法不变,但是遍历方法需要改一下function display() { var cur = this.head; var str = ''; //如果不设置下面标红的条件会陷入死循环 while (cur.next != null && cur.n...原创 2018-10-17 18:18:23 · 182 阅读 · 0 评论 -
数据结构与算法JavaScript描述读书笔记(js实现树)
js定义二叉查找树//创建构造函数创建节点function Node(data){ this.data = data; this.left = null; this.right = null;}function tree(){ this.root = null; this.insert = insert; this.inOrder = i...原创 2018-10-17 22:35:49 · 181 阅读 · 0 评论