js:数据结构笔记14--高级算法】的更多相关文章

高级排序算法:(处理大数据:百万以上) 希尔排序:是插入排序的优化版: 首先设置间隔数组,然后按照每个间隔,分别进行排序: 如第一个间隔为5,首先a[5]与a[0]进行插入排序;然后a[6]和a[0],a[1]进行插入排序,直到最后一个: 然后换下一个间隔值,直到所有间隔值排序完(当间隔值为1时,就是一般的插入排序): 效果: 首先在类中添加间隔数组: this.gaps = [5,3,1]; 然后添加函数: function shellsort() { for(var g = 0; g < t…
顺序查找:也称线性查找,暴力查找的一种 基本格式: var nums = []; for(var i = 0; i < 10; ++i) { nums[i] = Math.floor(Math.random() * 101); } function seqSearch(arr,data) { for(var i = 0; i < arr.length; ++i) { if(arr[i] === data) { return i; } } return -1; } seqSearch(nums,…
基本准备: function CArray(numElems) { this.dataStore = []; this.pos = 0; this.numElems = numElems; this.insert = insert; this.toString = toString; this.clear = clear; this.setData = setData; this.swap =swap; for(var i = 0; i < numElems; ++i) { this.dataS…
动态规划: 递归是从顶部开始将问题分解,通过解决所有分解出小问题来解决整体问题: 动态规划从底部开始解决问题,将所有小问题解决,然后合并掉一个整体解决方案: function dynFib(n) { var val = []; for(var i = 1; i <= n; ++i) { val[i] = 1; } if(n === 1) { return 1; } else { for(var i = 2; i <= n; ++i) { val[i] = i * val[i-1]; } ret…
在HTML表单中,可以上传文件的唯一控件就是<input type="file">. 注意:当一个表单包含<input type="file">时,表单的enctype必须指定为multipart/form-data,method必须指定为post,浏览器才能正确编码并以multipart/form-data格式发送表单的数据. 出于安全考虑,浏览器只允许用户点击<input type="file">来选择本地…
哈希表(散列表):通过哈希函数将键值映射为一个字典; 哈希函数:依赖键值的数据类型来构建一个哈希函数: 一个基本的哈希表:(按字符串计算键值) function HashTable() { this.table = new Array(137); this.simpleHash = simpleHash; this.showDistro = showDistro; this.put = put; this.init = init; } function simpleHash(data) { va…
数组: 其他语言的数组缺陷:添加/删除数组麻烦: js数组的缺点:被实现为对象,效率低: 如果要实现随机访问,数组还是更好的选择: 链表: 结构图: 基本代码: function Node (elem) { this.elem = elem; this.next = null; } function LList() { this.head = new Node("head"); this.find = find; this.insert = insert; this.findPrevi…
队列是一种特殊的列表,数据结构为FIFO: 定义: function Queue() { this.dataStore = []; this.enqueue = enqueue; this.dequeue = dequeue; this.front = front; this.back = back; this.count = count; this.toString = toString; this.isEmpty = isEmpty; } function enqueue(elem) { t…
栈是一种特殊的列表,数据结构为LIFO: 定义: function Stack() { this.dataStore = []; this.top = 0; this.push = push; this.pop = pop; this.peek = peek; this.length = length; this.clear =clear; } function push(elem) { this.dataStore[this.top++] = elem; } function pop() {…
JS中数组: 只是一种特殊的对象,比其他语言中效率低: 属性是用来表示偏移量的索引:在JS中,数字索引在内部被转化为字符串类型(这也是为什么写对象属性的时候可以不叫引号),因为对象中的属性必须是字符串类型: 操作: 判断:isArray(); 复制: 浅复制: var arr1 = arr2; 深复制: function copy(arr1) { var arr2 = []; for(var i = 0; i < arr1.length; i++) { arr2[i] = arr1[i]; }…