摘要:一、组成成分script:脚本语言部分DOM:把页面结构映射到js对象BOM:浏览器信息,如Navigator、Location等二、能力script:脚本程序能力DOM: 页面结构其实就是XML —— JS也有很好解析XML能力浏览器: Http请求带ip信息到服务器 —— 读取ip(Geol...
阅读全文
摘要:适用情况: 1. 问题可以分为多个阶段(如用1个的阶段,用2个的阶段,.......) 2. 无后效性: 每个阶段可以由前面的阶段决定(这样就减少了运算),但不能有后面的阶段反过去影响前面阶段 3. 重叠性:各阶段存在重复运算,尤其是后阶段依赖前阶段的结果 步骤: 1. 划分阶段 2. 确定阶段转移
阅读全文
摘要:实现思路:对全部输入或者部分做预处理,得到额外信息从而帮助提升算法效率例子:模式匹配/* * 模式匹配 * 直接思路: * 时空权衡法:对模式串进行预处理,构造出额外的移动信息表 */void makeTable(string pattern, char* table) { // t...
阅读全文
摘要:核心数学式: f = g+ h实现思路: 要求解的问题,如何转化为一个或多个容易求解的问题例子: 最小公倍数(先求乘积;再求最大公约数;再相除);检查数组元素唯一性(先排序;再遍历)
阅读全文
摘要:核心数学式:f(n) = f(n-1) + F; 应用:插入排序;生成排序/子集f(n) = f(n/2) + F; 应用:假币问题;俄式乘法f(n) = f(n-k) + F; 应用:查找第k大/小的元素实现思路:考虑对于元素数量为n的集合的执行结果,如何用数量为n-1、n/2或者n-...
阅读全文
摘要:核心数学式:f(n) = F + f([0,n/2]) + f([n/2,n]) 思路: 适用情景: 对一个很大集合,进行内部元素两两处理(比较大小,或者判断方位) 步骤: 1. 分 把问题集合分为独立的几个小集合 2. 治 各自解决 3. 合 把小集合的解合并成最终解 例子:快排、二叉树遍历、最近
阅读全文
摘要:蛮力法就是以最直观、最直接,从头到尾,从上到下的思维去尝试解决问题。它主要包括以下三种方式:一个一个地解决:冒泡排序尝试所有可能的迭代:顺序查找、模式匹配尝试所有的排列组合:最近点对、背包问题// 冒泡排序void bubble_sort(array[0,..,n]) { for i=0 to...
阅读全文
摘要:目前浅显地看过《数据结构与算法分析》《算法设计与分析基础》两本涉及到算法的书。简单认为,学习算法的重点和难点都不在代码实现上,而在:1、数学逻辑式 这个是写出伪代码的关键2、算法正确性证明 证明该算法能得到最优解还是比较优解数学逻辑式,从两方面考虑:一种是迭代,另一种是递归。迭代思维相对...
阅读全文
摘要:写出算法有一个比较通用的方法论,步骤如下: 1、理解问题 先弄清楚具体要解决什么问题 做成怎样的程度就可以满足问题需要?是需要精确值还是近似值? 2、分析问题 用数学思路去描述问题的求解过程 3、确定适当数据结构和流程控制结构 画出流程图 4、用伪代码表述算法 这是很关键的一步,基本是决定成败的一步
阅读全文
摘要:软件领域里面几大思想:管理复杂度 人脑终究能力有限,切忌让人脑同时在几个模块上/几个抽象层次上/几个问题域上工作工程思维 软件也是工程,是工程就应当要在质量、成本、时间中三者取其二;将有限资源投入到关键的工程步骤中迭代思维 先做出小模型,确定正确性可行性与否的问题。就像建筑业,也会做出小...
阅读全文
摘要:最近正在做web chart的系统分析设计。自己一边做,付总一边指导,颇有所获,记之。我估计,所有的系统分析设计(包括建筑业等)可能都是如此流程:从抽象到具体,从全局到细节,从用户视角到专业视角的自顶而下的过程。系统分析一般包括引言部分、产品定义部分、需求部分、概要设计、详细设计部分引言、产品定义部...
阅读全文