这篇文章主要介绍了JS 实现缓存算法的示例(FIFO/LRU),现在分享给大家,也给大家做个参考。FIFO最简单的一种缓存算法,设置缓存上限,当达到了缓存上限的时候,按照先进先出的策略进行淘汰,再增加进新的 k-v 。使用了一个对象作为缓存,一个数组配合着记录添加进对象时的顺序,判断是否到达上限,若到达上限取数组中的第一个元素key,对应删除对象中的键值。/*** FIFO队列算法实现缓存* 需要一个对象和一个数组作为辅助* 数组记录...
FIFO最简单的一种缓存算法,设置缓存上限,当达到了缓存上限的时候,按照先进先出的策略进行淘汰,再增加进新的 k-v 。
使用了一个对象作为缓存,一个数组配合着记录添加进对象时的顺序,判断是否到达上限,若到达上限取数组中的第一个元素key,对应删除对象中的键值。
/*** FIFO队列算法实现缓存* 需要一个对象和一个数组作为辅助* 数组记录进入顺序*/
class FifoCache{constructor(limit){this.limit = limit || 10this.map = {}...
本文主要介绍了JavaScript实现树的遍历算法,结合实例形式分析了javascript针对树结构的广度优先遍历与深度优先遍历实现方法,需要的朋友可以参考下,希望能帮助到大家。<script type="text/javascript">
var t = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19];
//下面这段深度优先搜索方法出自Aimingoo的【JavaScript语言精髓与编程实践】
var deepView = function(aTree,iNode) {(iNode in aTree) && (document.write(aTre...
这篇文章主要介绍了JS实现的计数排序与基数排序算法,结合实例形式简单分析了计数排序与基数排序的原理与JS实现技巧,对JS感兴趣的朋友可以一起来看看哦!本文实例讲述了JS实现的计数排序与基数排序算法。分享给大家供大家参考,具体如下:计数排序计数排序就是简单的桶排序,一个桶代表数组中一个数出现的个数,所以需要一个和数组数字范围一样大的辅助数组,一般用在范围小于100的排序,时间复杂度为O(n),空间复杂度为数组的数字范...
代码如下: function dateFormat(date, format) { var o = { "M+": date.getMonth() + 1, //month "d+": date.getDate(), //day "h+": date.getHours(), //hour "m+": date.getMinutes(), //minute "s+": date.getSeconds(), //second "q+": Math.floor((date.getMonth() + 3) / 3), //quarter "S": date.getMilliseconds() //millisecond }; //把yyyy替换成具体的年份 if (/(y+)/.test(format)) { format = format.replace(RegExp....
本文实例讲述了JS实现的排列组合算法。分享给大家供大家参考,具体如下:
在数学中有排列组合,用来计算概率。
比如:从4个数字中,任意选择两个的情况。从5个数字中任意选择3个数字的情况。(这里我们只考虑没有顺序的情况)。
公式:C(n,m)=n!/[m!(n-m)!]=n*(n-1)*...*(n-m+1)/[1*2*...*m],如C(5,2)=[5*4]/[1*2]=10.
举例说明:有 1,2,3,4 四个数字,从这四个数字中,任意选择两个数字一共有多少种情况:[1,2], [1,3], [1,4], [2...
本文实例讲述了JS实现的冒泡排序,快速排序,插入排序算法。分享给大家供大家参考,具体如下:
一、冒泡排序
大致分两步:
1、依次对比相邻2个数字,前者比后者大就调换位置
2、重复第一步操作,直到所有数字都按顺序排列
function bubbleSort(arr){for(var i=1; i<arr.length; i++){for(var j=0; j<arr.length-i; j++){if(arr[j]>arr[j+1]){arr[j]=[arr[j+1],arr[j+1]=arr[j]][0];}}}return arr;
}二、快速排序
大致分三步:
1、找...
本文实例讲述了JS使用栈判断给定字符串是否是回文算法。分享给大家供大家参考,具体如下:
/*使用栈stack类的实现*/
function stack() {this.dataStore = [];//保存栈内元素,初始化为一个空数组this.top = 0;//栈顶位置,初始化为0this.push = push;//入栈this.pop = pop;//出栈this.peek = peek;//查看栈顶元素this.clear = clear;//清空栈this.length = length;//栈内存放元素的个数
}
function push(element){this.dataStore[t...
本文实例讲述了JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法。分享给大家供大家参考,具体如下:
function Node(data,left,right) {this.data = data;this.left = left;this.right = right;this.show = show;
}
function show() {return this.data;
}
function BST() {this.root = null;this.insert = insert;this.preOrder = preOrder;this.inOrder = inOrder;this.postOrder = postOrder;this.getMin = ...
本文实例讲述了JS使用队列对数组排列,基数排序算法。分享给大家供大家参考,具体如下:
/*
* 使用队列对数组排列,基数排序
*对于0~99的数字,基数排序将数组集扫描两次。
* 第一次按个位上的数字进行排序,
* 第二次按十位上的数字进行排序
* */
function Queue(){this.dataStore = [];//存放队列的数组,初始化为空this.enqueue = enqueue;//向队列尾部添加一个元素this.dequeue = dequeue;//删除队首的元素this.theFront = the...
本文实例讲述了JavaScript数据结构与算法之检索算法。分享给大家供大家参考,具体如下:
javascript数据结构与算法---检索算法(二分查找法、计算重复次数)
/*只需要查找元素是否存在数组,可以先将数组排序,再使用二分查找法*/
function qSort(arr){if (arr.length == 0) {return [];}var left = [];//存储小于基准值var right = [];//存储大于基准值var pivot = arr[0];for (var i = 1; i < arr.length; i++) {if (arr[i] < pi...
本文实例讲述了JS实现判断有效的数独算法。分享给大家供大家参考,具体如下:
判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。
1.数字 1-9 在每一行只能出现一次。
2.数字 1-9 在每一列只能出现一次。
3.数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。数独部分空格内已填入了数字,空白格用 ‘. 表示。
示例 1:
输入:[
["5","3",".",".","7",".",".",".","."],
["6",".",".","1","9...
本文实例讲述了JS实现的合并两个有序链表算法。分享给大家供大家参考,具体如下:
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4可以直接运行的方案:
<script>
function Node(element) {this.element = element;//当前节点的元素this.next = null;//下一个节点链接
}
function List() {this.head = new Node("head");//头...
本文实例讲述了JS实现电话号码的字母组合算法。分享给大家供大家参考,具体如下:
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"
输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:
尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。
var letterCombinations = function(digits) {c...
本文实例讲述了JS实现的杨辉三角【帕斯卡三角形】算法。分享给大家供大家参考,具体如下:
杨辉三角,是二项式系数在三角形中的一种几何排列,在中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。 在欧洲,帕斯卡(1623-1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。 帕斯卡的发现比杨辉要迟393年,比贾宪迟600年。题目: 给定非负整数numRows,生成Pascal三角形的第一个numRows。在Pascal的三角形中,每...