数据结构和算法
theanarkh
这个作者很懒,什么都没留下…
展开
-
libuv源码分析之queue
libuv的queue实现得很博大精深。严重考验了c指针的理解。今天就分享一下他的实现。首先从一个typedef开始typedef void *QUEUE[2];这个是c语言中定义类型别名的一种方式。比如我们定义一个变量QUEUE q就相当于void *q[2];即一个数组,他每个元素是void型的指针。下面我们接着分析四个举足轻重的宏定义,理解他们就相当于理解了libuv的...原创 2020-04-24 00:39:11 · 429 阅读 · 2 评论 -
深度优先、广度优先创建n叉树
1function makeTree(layer) { const root = {}; makeNode(root, layer); return root;}function makeNode(node, layer, keys = ['left', 'right']) { if (!--layer) { keys.forEach((k...原创 2019-10-24 23:19:06 · 187 阅读 · 0 评论 -
计算fibnacci数列第n个数的几种方法以及性能比较
var memory = {}; function fib(n){ if (n<=2) { return 1; } if (memory[n]) { return memory[n]; } return memory[n] = fib(n-1) + fib(n-2原创 2017-10-12 00:22:16 · 895 阅读 · 0 评论 -
前端异步请求中后发先到的解决方案
CommonRequestIdManager.js/* 通过id来跟踪请求和判断返回是否有效*/function CommonRequestIdManager() { if (!(this instanceof CommonRequestIdManager)) { return new CommonRequestIdManager();原创 2017-08-13 01:55:46 · 2807 阅读 · 0 评论 -
js实现的大根堆算法(基于链式的m叉树)
面向过程版本var COUNT = 3;/* 获取待排序数据,数据的个数和值随机生成*/function getData() { var arr = []; var i = 0; var len = Math.max(10, ~~(Math.random() * 30 )); while(i < len) { arr.push(~~(M原创 2017-08-12 23:45:15 · 462 阅读 · 0 评论 -
js实现的大根堆算法(基于数组的二叉树)
function buildHeap(data) { var i = Math.floor((data.length -1)/2); while(i) { transfer(data,i,data.length-1); i--; } transfer(data,i,data.length-原创 2017-08-12 23:37:22 · 578 阅读 · 0 评论 -
js实现的哈夫曼编码
修改版function Huffman(str) { // 需要编码的字符串 this.str = str; // 键和频率映射表 this.keyCountMap = null; // 编码和键的映射表 this.codeKeyMap = {}; // 键和编码的映射表 this.keyCodeMap = {}; //原创 2017-07-30 15:42:44 · 1291 阅读 · 0 评论 -
希尔排序
function shellSort(arr) {var step = 5;while (step > 0) {for (var i = step;ivar j = i-step;var key = arr[i];while (j>=0 && keyarr[j+step] = arr[j];j-=step;}arr[j+step] = key;}st原创 2016-10-08 19:42:09 · 261 阅读 · 0 评论 -
插入排序
function insertSort(arr) {for (var i = 1;ivar j=i-1;var key = arr[i];while (j>=0 && keyarr[j+1] = arr[j];j--;}arr[j+1] = key;}}var arr =[];for (var i=0;iarr.push(~~(Math.原创 2016-10-08 20:01:28 · 219 阅读 · 0 评论 -
在多叉树中查找某个节点及其拓展思考
var tree=[{id:1,children:[{id:2,children:[{id:4}]},{id:3,children:[{id:10}]}]},{id:11,children:[{id:112,children:[{id:114}]},原创 2016-05-18 02:02:37 · 4291 阅读 · 0 评论