首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
js:数据结构笔记10--图和图算法
】的更多相关文章
js:数据结构笔记10--图和图算法
图:是由边和定点的集合组成: 按照图的定点对是否有序可以分为:有向图和无向图: 路径:所有顶点都由边连接构成:路径长度为第一个定点到最后一个顶点之间的数量: 环:指向自身的顶点,长度为0:圈:至少有一条边的路径,且第一个顶点和最后一个顶点相同: 强连通:如果两个顶点之间有路径,则这两个顶点就是强连通,反之: 构建简单有向图: 利用邻接表数组表示:构建二维数组,第一个存储顶点标号,第二个存储与这个顶点相连的顶点标号: function Graph (v) { this.vertices =…
JS学习笔记10之Math对象
-->Math对象 常用属性和方法-->使用Math对象制作相应的效果 Math对象用于执行数学任务 一.Math对象的属性: 二.Math对象的方法: 三.常用属性和方法: Math.PI ----------------返回圆周率3.14 ...Math.ceil(x) ------------对数值x进行向上取整Math.floor(x) -----------对数值x进行向下取整Math.round(x) ----------对数值x进行四舍五入Math.min(a,b,c...) -…
廖雪峰js教程笔记10 浏览器对象
JavaScript可以获取浏览器提供的很多对象,并进行操作. window window对象不但充当全局作用域,而且表示浏览器窗口. window对象有innerWidth和innerHeight属性,可以获取浏览器窗口的内部宽度和高度.内部宽高是指除去菜单栏.工具栏.边框等占位元素后,用于显示网页的净宽高. 兼容性:IE<=8不支持. 浏览器对象 阅读: 52726 JavaScript可以获取浏览器提供的很多对象,并进行操作. window window对象不但充当全局作用域,而且表示浏览…
js:数据结构笔记14--高级算法
动态规划: 递归是从顶部开始将问题分解,通过解决所有分解出小问题来解决整体问题: 动态规划从底部开始解决问题,将所有小问题解决,然后合并掉一个整体解决方案: 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…
js:数据结构笔记13--检索算法
顺序查找:也称线性查找,暴力查找的一种 基本格式: 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,…
js:数据结构笔记12--排序算法(2)
高级排序算法:(处理大数据:百万以上) 希尔排序:是插入排序的优化版: 首先设置间隔数组,然后按照每个间隔,分别进行排序: 如第一个间隔为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…
js:数据结构笔记11--排序算法(1)
基本准备: 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…
js:数据结构笔记9--二叉树
树:以分层的方式存储数据:节点:根节点,子节点,父节点,叶子节点(没有任何子节点的节点):层:根节点开始0层: 二叉树:每个节点子节点不超过两个:查找快(比链表),添加,删除快(比数组): BST:二叉树查找: 设置根节点为当前节点: 如果要插入的节点小于当前节点,则设置其左节点为新的当前节点:大于的话选右节点: 如果如果选择的节点为null,则将要插入的节点放在这个位置,退出:否则继续向下查找: 实现的基本代码: function Node (data,left,right) { this.d…
js:数据结构笔记7--哈希表
哈希表(散列表):通过哈希函数将键值映射为一个字典; 哈希函数:依赖键值的数据类型来构建一个哈希函数: 一个基本的哈希表:(按字符串计算键值) function HashTable() { this.table = new Array(137); this.simpleHash = simpleHash; this.showDistro = showDistro; this.put = put; this.init = init; } function simpleHash(data) { va…
js:数据结构笔记5--链表
数组: 其他语言的数组缺陷:添加/删除数组麻烦: 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…
js:数据结构笔记4--队列
队列是一种特殊的列表,数据结构为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…
js:数据结构笔记3--栈
栈是一种特殊的列表,数据结构为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:数据结构笔记1---数组
JS中数组: 只是一种特殊的对象,比其他语言中效率低: 属性是用来表示偏移量的索引:在JS中,数字索引在内部被转化为字符串类型(这也是为什么写对象属性的时候可以不叫引号),因为对象中的属性必须是字符串类型: 操作: 判断:isArray(); 复制: 浅复制: var arr1 = arr2; 深复制: function copy(arr1) { var arr2 = []; for(var i = 0; i < arr1.length; i++) { arr2[i] = arr1[i]; }…
ember.js:使用笔记10 常用方法
init: controller中初始化方法, //注意该方法是在其他方法之前,所以取不出this,model等值: 跳转:this.transitionToRoute(routename,param); //形式对应如:this.resource('question', {path: 'test/:fullname/:sequence/:guid'});…
js:数据结构笔记8--集合
集合:唯一性,无序性: 基本结构: function Set () { this.dataStore = []; this.add = add; this.remove = remove; this.contains =contains; this.show = show; } function contains(data) { var pos = this.dataStore.indexOf(data); if(pos > -1) { return true; } else { return…
js:数据结构笔记6--字典
Dictionary类的基础是数组不是对象:字典的主要用途是通过键取值: 基本定义: function Dictionary() { this.dataStore = new Array(); this.add = add; this.find = find; this.remove = remove; this.showAll = showAll; } function add(key,value) { this.dataStore[key] = value; } function find(…
js:数据结构笔记2---列表
列表: 定义:一组有序的数据: function List() { this.listSize = 0; this.pos = 0; this.dataStore = []; this.find = find; ......................... } 方法: append:添加数据 function append(element) { this.dataStore[this.listSize++] = element; } find:查找元素://indexOf function…
js读书笔记
js读书笔记 基本类型的基本函数总结 1. Boolean() 数据类型 转换为true的值 转换为false的值 Boolean true false String 任何非空字符串 ""(空字符串) Number 任何非零数值(包括无穷大) 0和NaN Object 任何对象 null Undefined n/a undefined 2. Number():可以用于任何数据类型 数据类型 返回值 true or false 1和0 数字值 简单传入和返回 null 0 undefin…
React.js入门笔记
# React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的实例.日后还将对官方文档进阶和高级部分分专题进行学习并记录. 尽管前端学习面临着各种各样的焦虑,尽管越来越多的框架出现,然而无可否认的是,它们都在从不同的角度提高生产力--从这个角度而言,之所以焦虑,本质原因是因为行业的门槛其实是降低了,而自己变得"不值钱"起来.在目前的环境下,无论如何必…
操作系统概念学习笔记 10 CPU调度
操作系统概念学习笔记 10 CPU调度 多道程序操作系统的基础.通过在进程之间切换CPU.操作系统能够提高计算机的吞吐率. 对于单处理器系统.每次仅仅同意一个进程执行:不论什么其它进程必须等待,直到CPU空暇能被调度为止. 多道程序的目标是在不论什么时候都有某些进程在执行,以使CPU的使用率最大化.多道程序的思想较为简单.当一个进程必须等待时,操作系统会从该进程拿走CPU的使用权,而将CPU交给其它进程. CPU-I/O 区间周期 CPU的成功调度依赖于进程的例如以下属性: 进程执行由CPU执行…
WebGL three.js学习笔记 使用粒子系统模拟时空隧道(虫洞)
WebGL three.js学习笔记 使用粒子系统模拟时空隧道 本例的运行结果如图: 时空隧道demo演示 Demo地址:https://nsytsqdtn.github.io/demo/sprite/tunnel three.js的粒子系统 three.js的粒子系统主要是依靠精灵体来创建的,要实现three.js中的粒子系统创建,一般有两种方式. 第一种是在场景中使用很多歌THREE.Sprite创建单个的精灵,这样创建的每一个精灵体,我们都可以单独对它们进行操作,同时我们也可以用一个THR…
WebGL three.js学习笔记 法向量网格材质MeshNormalMaterial的介绍和创建360度全景天空盒的方法
WebGL学习----Three.js学习笔记(5) 点击查看demo演示 Demo地址:https://nsytsqdtn.github.io/demo/360/360 简单网格材质 MeshNormalMaterial MeshNormalMaterial是一种不受渲染时使用的颜色影响的材质,它只与自己每一个面从内到外的法向量有关.法向量在webgl中用处十分广泛,光的反射,以及三维图形的纹理映射都与这个有关. 从图中可以看到,网格的每一面渲染的颜色都是不一样的,如果我们想要在物体表面添加法…
WebGL three.js学习笔记 6种类型的纹理介绍及应用
WebGL three.js学习笔记 6种类型的纹理介绍及应用 本文所使用到的demo演示: 高光贴图Demo演示 反光效果Demo演示(因为是加载的模型,所以速度会慢) (一)普通纹理 计算机图形学中的纹理既包括通常意义上物体表面的纹理即使物体表面呈现凹凸不平的沟纹,同时也包括在物体的光滑表面上的彩色图案,所谓的纹理映射就是在物体的表面上绘制彩色的图案. 在three.js中使用纹理可以实现很多不同的效果,但是最基本的就是为网格体的每个像素指定颜色.等同于将一张纹理图片应用在一个几何体的材质上…
原生js焦点轮播图
原生js焦点轮播图主要注意这几点: 1.前后按钮实现切换,同时注意辅助图2.中间的button随着前后按钮对应切换,同时按button也能跳转到相应的index3.间隔调用与无限轮播.4.注意在动画时要停止按钮,或者说上一个动画完毕下一个动画才能执行5.另外在切换图片的时候,底部的Button动画效果,是从底部开始往上升的,要用到transform:scale()和transform-origin:0 100%两个转换属性,代码如下 <!DOCTYPE html> <html> &…
JS 学习笔记--9---变量-作用域-内存相关
JS 中变量和其它语言中变量最大的区别就是,JS 是松散型语言,决定了它只是在某一个特定时间保存某一特定的值的一个名字而已.由于在定义变量的时候不需要显示规定必须保存某种类型的值,故变量的值以及保存的数据类型可以在脚本页面的生命周期中随意的改变,其他语言则不可. 1.基本类型和引用类型的值 基本类型:指那些保存在栈内存中的简单数据,即这种值完全保存在内存中的一个位置.他们所占据的空间大小是固定的.类型有:Number, Null, Boolean, Undefined, String[其…
Raphaël.js学习笔记
Rapheal.js 是一个矢量图绘图库.对于支持HTML5 SVG的浏览器使用SVG绘图,不支持SVG的IE(ie6,7,8)使用VML绘图.所以Raphael.js的兼容性非常好. Raphael.js的作者是前端大师Dmitry Baranovskiy.目前Raphael.js是ExtJS图表功能的基本绘图库,所以代码质量与维护性也会比较有保证. Raphael.js本身的拼写是Raphaël.js,这里为了方便,所以写作Raphael.js. 下载Raphael.js http://ra…
Windows phone 8 学习笔记(5) 图块与通知
原文:Windows phone 8 学习笔记(5) 图块与通知 基于metro风格的Windows phone 8 应用提到了图块的概念,它就是指启动菜单中的快速启动图标.一般一个应用必须有一个默认图块,还可以有若干个次要图块.另外,通知与图块的关系比较密切,我们可以通过在接受到消息时动态更新图块来达到适时的效果.我们本节把图块和通知放在一起讲. 快速导航: 一.图块 二.图块更新计划 三.本地通知 四.推送通知 一.图块 1)定义默认图块 默认图块只能在清单文件中定义…
node.js系列笔记之node.js初识《一》
node.js系列笔记之node.js初识<一> 一:环境说明 1.1 Linux系统CentOS 5.8 1.2 nodejs v0.10.15 1.3 nodejs源码下载地址 http://blog.nodejs.org/ 1.4 开发工具 WebStorm6 下载地址 http://www.jetbrains.com/webstorm/whatsnew/ 二:安装配置 2.1 下载nodejs for linux (nodejs source) 2.2 nodejs安装过程中遇到的问题…
JS面向对象笔记二
菜单导航,<JS面向对象笔记一>, 参考书籍:阮一峰之<JavaScript标准参考教程> 一.构造函数和new命令 二.this关键字 三.构造函数和new命令 四.构造函数和new命令 五.构造函数和new命令 六.构造函数和new命令 七.构造函数和new命令 八.构造函数和new命令 一.构造函数和new命令 1.构造函数 JavaScript语言的对象体系,不是基于"类"的,而是基于构造函数(constructor)和原型链(prototype) 为…
vue.js 学习笔记3——TypeScript
目录 vue.js 学习笔记3--TypeScript 工具 基础类型 数组 元组 枚举 字面量 接口 类类型 类类型要素 函数 函数参数 this对象和类型 重载 迭代器 Symbol.iterator 声明.解构.展开.类型断言 泛型 泛型约束 交叉类型.联合类型 索引类型 映射类型 类型兼容 类型保护.推断 模块和命名空间 装饰器 类装饰器: 函数装饰器: 属性装饰器: 参数装饰器: vue.js 学习笔记3--TypeScript 工具 npm install -g typescript…