摘要: offscreenPageLimit = 0 的情况 此种情况表示不会预先加载其他的Fragment,仅仅加载第一个Fragment,其生命周期如下: Test fragment 0 onAttach Test fragment 0 onCreate Test fragment 0 onCreate 阅读全文
posted @ 2021-01-15 14:23 ijkzen 阅读(3604) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 本小节讲述了两点内容: 合适动态规划算法解决的最优化问题的两个要素 备忘方法在动态规划中的作用 两个要素 最优子结构 一个问题的最优解包含其子问题的最优解 还有一点值得注意,同时还需要满足子问题无关的特性:同一个原问题的一个子问题的解不影响另一个子问题的解。 重叠子问题 某一个子问题可能会 阅读全文
posted @ 2021-01-15 14:16 ijkzen 阅读(514) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 本小节介绍了利用动态规划解决矩阵链乘法的过程。 穷举不可行 想要通过穷举的方法,获得所有的解决方案是不可行的。 对于一个矩阵链,我们可以宏观地将它看作两个子矩阵链相乘,即$A_1..A_k$和$A_(k+1)..A_n$; 所以代价$P(n)$的表达式如下: \[ \begin{align 阅读全文
posted @ 2021-01-15 14:15 ijkzen 阅读(755) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 说文解字 动态规划(dynamic programming),描述了它区别与其他算法的最大特征; 其中$programming$表示的是一种表格法,在动态规划算法执行的过程中,会动态地去将子问题的解填入表格和读取已知子问题的解,以减少不必要的运算; 与分治法的异同 相同点: 都是通过组合子 阅读全文
posted @ 2021-01-15 14:13 ijkzen 阅读(358) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 本小节介绍了一种红黑树的扩展:区间树; 为每个节点添加了一个新属性$int$,属性$int$又有两个属性$low,high$,分别表示区间的两端; 区间重叠 区间便于表示占用一连续时间的一些事件。为了查询给定时间内发生的事件,需要在区间树找到与给定时间重叠的部分; 假设在一条直线有左右两个 阅读全文
posted @ 2021-01-15 14:12 ijkzen 阅读(426) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 本小节介绍了扩展数据结构的抽象过程,同时证明了一个定理; 抽象过程 选择一种基础数据结构 确定基础数据结构中要维护的附加信息 检验基础数据结构上的基本修改操作能否维护附加信息 设计一些新的操作来应用附加信息 红黑树的扩张 设$f$是$n$个节点的红黑树$T$扩张的属性,且假设对任一节点$x 阅读全文
posted @ 2021-01-15 14:08 ijkzen 阅读(335) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 本小节介绍了红黑树的改进版本,为每个节点新增一个属性,用于记录当前子树的数量; 新增属性$x.size$是由左子树加右子树再加本身组成,即$x.size = x.left.size + x.right.size + 1$; 维护数量属性 对红黑树的基本操作过程中,需要持续维护$size$属 阅读全文
posted @ 2021-01-15 14:07 ijkzen 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 本小节介绍了红黑树的删除操作,这是红黑树的基础操作中比较复杂的一种; 和红黑树的插入的基本思想一致,红黑树的删除也是先将元素普通地删除,然后在调整二叉树使其符合红黑树的性质。 红黑树的元素普通删除 RB-TRANSPLANT(T, u, v) if u.p == T.nil T.root 阅读全文
posted @ 2021-01-15 11:50 ijkzen 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 本小节介绍了向红黑树插入元素的过程: 将新元素普通地插入二叉树; 调整二叉树使其符合红黑树的性质; 插入元素到二叉树 RB-INSERT(T, z) y = T.nil x = T.root while x != T.nil y = x if z.key < x.key x = x.lef 阅读全文
posted @ 2021-01-15 11:48 ijkzen 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 本小节介绍了旋转方法来修改搜索树; 如果按照普通二叉搜索树的方式去插入和删除元素,必定会破坏红黑树的性质; 为了维护红黑树的性质,必须要改变书中某些节点的颜色和指针结构; 指针结构的修改是通过旋转实现的,分为左旋和右旋,具体操作如下图: 其中左旋的伪代码如下: LEFT-ROTATE(T, 阅读全文
posted @ 2021-01-15 11:46 ijkzen 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 本小节介绍了红黑树的一些性质,具体的实现方法在之后的章节中讲述。 红黑树解决的问题 普通的二叉搜索树所有的操作都依赖于树的高度,但是树高又依赖于数据,极不稳定; 红黑树使得元素分布相对平衡,来使得树高为$O(\lg)$,减少操作时间。 红黑树的性质 每个节点或是红色,或是黑色。 根节点是黑 阅读全文
posted @ 2021-01-15 11:45 ijkzen 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 本小节介绍了二叉搜索树的插入和删除,至于修改只要先删除后插入就好; 插入 插入的过程和搜索的过程有些相似,先找到合适的位置然后将元素插入; 伪代码如下: TREE-INSERT(T, z) y = NIL x = T.root while x != NIL y = x if z.key < 阅读全文
posted @ 2021-01-15 11:43 ijkzen 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 本小节介绍了二叉搜索树的查询操作,包括$SEARCH, MINIMUM,MAXIMUM, SUCCESSOR, PREDECESSOR$这$5$个操作,这五个操作均可以在$O(h)$,$h$是当前二叉树的高度。 搜索 递归实现: TREE-SEARCH(x, k) if x == NIL 阅读全文
posted @ 2021-01-15 11:40 ijkzen 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 本小节介绍了二叉搜索树,二叉搜索树就是左子节点比父节点的值要小,右子节点的值比父节点大的二叉树;这里的小于/大于还包括等于。 INORDER-TREE-WALK(X) if x != NIL INORDER-TREE-WALK(x, left) print x.key INORDER-TR 阅读全文
posted @ 2021-01-15 11:37 ijkzen 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 本小节介绍了散列表的灵魂--散列函数; 一个好的散列函数应满足简单均匀散列假设:每个关键字都被等可能地散列到$m$个槽位中的任何一个,并与其他关键字已散列到哪个槽位无关。 虽然上述假设难以实现,但是可以作为衡量其他散列函数的标准。 有一些动态集合的元素关键字并不是自然数,我们需要使用各种各 阅读全文
posted @ 2021-01-15 11:35 ijkzen 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 虽然直接寻址表的所有字典操作能在$O(1)$时间内完成,但是它的缺点也同样明显; 如果某一个元素的关键字特别大,但是动态集合的元素数量又相对少,这就会造成极大的内存浪费;此外,直接寻址表对拥有同样关键字的元素缺乏合理的处理; 散列表改善了直接寻址表的上述缺点: 原本元素在直接寻址表的位置依 阅读全文
posted @ 2021-01-15 11:33 ijkzen 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 本小节介绍了直接寻址表,其实也就是数组; 为一个动态集合创建一个数组,这个数组长度大于等于这个动态集合的长度,将数组下标作为集合元素的关键字,进行直接寻址,这样的数组被称为直接寻址表。 课后习题 11.1-1 假设一动态集合$S$用一个长度为$m$的直接寻址表$T$来表示。请给出一个查找$ 阅读全文
posted @ 2021-01-15 11:31 ijkzen 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 本小姐介绍了两种有根树的实现方法,二叉树和分支无限制的有根树; 二叉树 二叉树的单个节点有三个指针$p, left, right$,其中$p$指向父节点,如果一个节点为根节点,则其父节点指向空;$left, right$分别指向左子节点和右子节点; 分支无限制的有根树 上面的二叉树虽然好用 阅读全文
posted @ 2021-01-15 11:28 ijkzen 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 本小节介绍了利用数组实现指针的过程。 利用二维数组 其中一列代表一个节点,一列分为上中下三个部分,上代表后继节点的坐标,中代表当前节点的值,下代表前驱节点的坐标; 利用单数组 其中一个节点由连续的数组元素组成,图中4代表该节点的值,7代表后继节点的坐标,13代表前驱节点的坐标; 这种单数组 阅读全文
posted @ 2021-01-15 11:26 ijkzen 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 本小节介绍了链表,链表由一个个节点连接而成,单个节点的组成如下: public class Node { public Node previous; public Object key; public Node next; } 由上述节点组成的链表称为双向链表;也有节点只有一个前驱节点或者 阅读全文
posted @ 2021-01-15 11:24 ijkzen 阅读(92) 评论(0) 推荐(0) 编辑