【读书笔记】数据结构与算法分析 - C 语言描述 - 第五部分 - 图算法
第十七章 图的性质图的定义:元素的集合 + 元素之间连接的集合图论是组合数学的一个主要分支图的应用例子:地图;超文本;电路;调度;事务;匹配;网络;程序结构任何链式结构都是图的一种表示树和链表的算法都是图算法的特例算法的开销:元素集性质 + 连接集性质术语:图:顶点集 + 边集约定:V:顶点数;E:边数边将一对不同的顶点连接在一起,每对顶点间至多有一条边连接重复边(平行边):每对顶点间可有任意边相连(多重图)自环:顶点连接到自身的边简单图:无重复边 + 无自环带自环的多重图边数:V 个顶点至多有 V(V-1)/2 条边称谓:点:顶点、结点(数据结构)边:边、链接(数据结构)、弧关系:一条边连接两个顶点两个顶点是相互邻接的:A、B 相互邻接这条边是依附于这两个顶点的:C 依附于 A、B顶点的度:依附于这个顶..
更多【读书笔记】数据结构与算法分析 - C 语言描述 - 第四部分 - 搜索
第十二章 符号表和二叉搜索树符号表:操作:插入:插入一个数据项搜索:搜索一个具有给定关键字的数据项(或若干数据项)删除:删除一个特定数据项选择:选出第 k 个最小数据项排序:按关键字顺序访问所有数据项连接:连接两个符号表有相同关键字时:不同关键字的数据项 + 对于每个关键字有一条链表用于指向相同关键字相同关键字不隐藏,在一次搜索中返回所有唯一标识每个数据项手指搜索(Finger search):搜索可从以前结束的地方开始范围搜索:统计或访问落入某个区间的节点近邻搜索:查找距离某点最近的关键字(数据项)计数(Count)操作:懒方法:Count() 函数积极方法:局部变量关键字索引搜索:适用于关键字的值是不同的小整数原理:对数组中的数据项排序,然后按关键字进行索引无任何数据项(只有关键字)时:可使用位表:把..
更多【读书笔记】数据结构与算法分析 - C 语言描述 - 第三部分 - 排序
第六章 基本排序方法基本的意思是:适用于小规模或特殊结构基本排序方法之间的时间复杂度只相差常数因子:都与 N^2 成正比可用来改进更复杂算法的效率不占用额外的内存空间排序:内部排序:任意访问元素外部排序:必须顺序访问数组:适合顺序分配链表:适合链式分配非适应性:所执行的操作序列独立于数据顺序(只使用了比较-交换操作),适于硬件实现自适应性:操作序列与比较结果有关,大部分算法都是这类减少开销:换成更高效的算法缩短内部循环额外内存空间:原位排序:小堆栈或表引用数据:N足够空间:副本稳定的:相同关键字排序后位置不变不稳定的:相同关键字排序后位置改变强制稳定:改用稳定排序较好排序前为各关键字添加小索引加长关键字访问的元素过大:使用间接排序选择排序:选出最小(最大)元素,与第一个元素交换,然后对除第一个元素外的其余..
更多【读书笔记】数据结构与算法分析 - C 语言描述 - 第二部分 - 数据结构
第三章 基本数据结构客户-接口-实现数组:固定有序存储空间相邻:适合访问而不是操纵两种常见错误:引用了无意义的 a[i] 内容没有保证 i 非负且小于数组大小查找(索引):在链表中需要遍历,效率不高与向量(矢量)对应二维数组:矩阵 + 主序链表:逻辑有序高效重排数据项:适合操纵而不是访问可优雅地增大和缩小自引用结构 + 循环结构末尾节点的实现细节:不指向任何节点的空链接指向不包含元素节点的哑元节点循环链表:指向第一个节点(首节点)在开头保留头节点:无数据域链域指向真正的第一个节点好处:把链表指针作为参数,使函数可修改链表,可接受或返回一个空表不保留头节点时:把指向输入链表的指针作为参数,返回输出链表的指针。这种方法适合递归链表插入:在数组中需要移动元素,效率不高删除:遍历两种常见错误:引用了未定义的指针使..
更多【读书笔记】数据结构与算法分析 - C 语言描述 - 第一部分 - 基础知识
第一章 引言连通性问题:两个操作:查找(find)、并集(union)快速-查找(quick-find):N 个对象,M 次合并:MN快速-合并(quick-union):N 个对象,M 对:MN/2加权快速-合并(weighted quick-union):遍历 2lgN 个指针:线性带等分路径压缩的加权快速-合并:保证线性在线算法(online):能处理的数据没有限制第二章 算法分析的原理算法分析的种类:最坏情况(Worst Case):任意输入规模的最大运行时间(Usually)在任何输入下运行时间的一个上界平均情况(Average Case):任意输入规模的期待运行时间(Sometimes)最佳情况(Best Case):通常最佳情况不会出现(Bogus)基本思路:忽略掉那些依赖于机器的常量关注运..
更多【读书笔记】Go 程序设计语言
第一章 入门分号注入规则:编译器会将特定符号后的换行符(\n)转换成分号(;){ 必须和 func 在同一行x + y合法:1 2 x + y非法:1 2 x + y所有子序列操作都使用半开区间:包含第一个索引(省略则为0),不包含第二个索引(省略则为len(s)),也可以都省略 s[:]三索引切片:在现有数组或切片下,使用第二个冒号来指示新生成的切片的容量gofmt 会按照字母顺序表(字典顺序)对 import 中导入的包排序初始化:s := "" 显式初始化说明初始值的重要性var s string 隐式初始化说明初始值不重要map 包含一个引用,当传参时按值传递(副本),但因为是引用类型所以可以在函数体内修改并外部可见结构体类型转换忽略标签:结构体类型转换时,标签会被忽略。也就是说,标签不同的结构体..
更多【读书笔记】刻意练习 - 如何从新手到大师
前言长时工作记忆正是区分卓越者与一般人的一个重要能力,它才是刻意练习的指向与本质。刻意练习的任务难度要适中,能收到反馈,有足够的次数重复练习,学习者能够纠正自己的错误。长时工作记忆的培养要点:赋予意义,精细编码:(准)专家们能非常快地明白自己领域的单词与术语,在存储信息的时候,可以有意识地采取元认知的各项加工策略;提取结构或模式:往往需要将专业领域的知识,提取结构或模式以更好地方式存储;加快速度,增加连接:通过大量重复的刻意练习,专家在编码和提取过程方面比新手都快很多,增加了长时记忆与工作记忆之间的各种通路。认知复杂性高与认知复杂性低的学习活动的差异在很大程度上表现为隐性知识的多少与比重。认知复杂度高的人具有高度复杂化的思维能力,更善于同时使用互补与互不相容的概念来理解客观世界。人的学习受到情境的制约和促..
更多【读书笔记】国富论
前言作者着眼于他所观察到的尚未出现工业革命的世界经济,首次系统分析了国民财富产生、分配与持续运转的内在规律。他认为人类利己的动机就像一只看不见的手,在暗中推动一切经济行为,同时强调政府应尽可能少地干预,并给予贸易自由的发展。近代以来,一个国家真正的崛起,更多取决于它是否在经济上崛起,纯粹靠军事征服和领土扩张而实现的崛起,很难长久维系。以劳动价值论为基础,以增加国民财富为主线,以资本主义社会3个阶级的3种收入理论为核心,总结出国民财富增长的两种途径:分工与劳动生产率的提高;增加劳动者人数和资本积累。重要观点:分工的重要性劳动价值理论自由贸易的主张“看不见的手”规范政府的职责第一篇 论劳动生产力增进的原因,以及劳动生产物自然分配给各阶级人民的顺序第1章 论分工凡是能够分工的工作,一旦使用分工制,就能够相应地增..
更多【读书笔记】数据结构(C语言版)(第三版)人民邮电出版社
第一章 概论数据:逻辑结构:数据与数据之间所存在的逻辑关系存储结构:数据在计算机中的存储结构,体现逻辑结构运算集合:由为数据定义的所有运算构成,定义在逻辑结构上,实现依赖于存储结构结点:开始结点:无前驱结点内部结点:不是开始结点,也不是终端结点终端结点:无后继结点线性结构:只有一个开始和终端,其余每个结点有且仅有一个前驱和后继非线性结构:树型结构:一个开始,多个终端,除开始外都有且只有一个前驱图形结构:多个前驱,多个后继存储结构:顺序存储:物理位置相邻链式存储:每个结点有若干个指针索引存储:根据结点索引号确定存储地址散列存储:结点 k_i 的存储地址有函数 h(k_i) 确定数据的抽象发展阶段:无类型的二进制数:基本数据类型基本:用户自定义类型自定义:抽象数据类型数据类型:数据属性在这些数据上可施加的运算..
更多【读书笔记】人性的弱点
01:如欲采蜜,勿蹴蜂房批评不但不会改变事实,反而会招致愤恨。因批评而引起的羞忿,常常使雇员、亲人和朋友的情绪大为低落,并且对应该矫正的现实状况,一点好处也没有。尽量去了解别人,而不要用责骂的方式;尽量设身处地去想——他们为什么要这样做。这比起批评责怪要有益、有趣得多,而且让人心生同情、忍耐和仁慈。02:真诚地赞赏他人天底下只有一种方法可以促使他人去做任何事——给他想要的东西。在你每天的生活之旅中,别忘了为人间留下一点赞美的温馨,这一点小火花会燃起友谊的火焰。爱默生说:“我遇见的每一个人,或多或少是我的老师,因为我从他们身上学到了东西。”03:激发他人的强烈需求天底下只有一种方法可以影响他人,就是提出他们的需要,并且让他们知道怎样去获得。成功的人际关系在于你捕捉对方观点的能力;还有,看一件事须兼顾你和对方..
更多