在本章中,我们讨论了图抽象数据类型,以及图的一些实现。 图使我们能够解决许多问题,只要我们可以将原始问题转换为可以由图表示的东西。 特别是,我们已经看到,图有助于解决以下领域的问题。 广度优先搜索找到未加权的最短路径。 Dijkstra的加权最短路径算法。 深度优先搜索图探索。 强连通分量,用于简化图。 排序任务的拓扑排序。 广播消息的最小权重生成树。
在这一章中,我们看了树的数据结构。 树数据结构使我们能够编写许多有趣的算法。 在本章中,我们研究了使用树来执行以下操作的算法: 用于解析和计算表达式的二叉树。 用于实现 Map ADT的二叉树。 用于实现 Map ADT的平衡二叉树(AVL树)。 一个二叉树实现一个最小堆。 用于实现优先级队列的最小堆。
对于有序和无序列表,顺序搜索是 $$O(n)$$。 在最坏的情况下,有序列表的二分查找是 $$O(logn)$$。 哈希表可以提供恒定时间搜索。 冒泡排序,选择排序和插入排序是 $$O(n^2)$$算法。 希尔排序通过排序增量子列表来改进插入排序。它落在 $$O(n)$$ 和 $$O(n^2)$$ 之间。 归并排序是 $$O(nlogn)$$,但是合并过程需要额外的空间。 快速排序是 $$O(nl
在本章中,我们讨论了几个递归算法的例子。 选择这些算法来揭示几个不同的问题,其中递归是一种有效的问题解决技术。 本章要记住的要点如下: 所有递归算法都必须具有基本情况。 递归算法必须改变其状态并朝基本情况发展。 递归算法必须调用自身(递归)。 递归在某些情况下可以代替迭代。 递归算法通常可以自然地映射到你尝试解决的问题的表达式。 递归并不总是答案。有时,递归解决方案可能比迭代算法在计算上更昂贵。
线性数据结构以有序的方式保存它们的数据。 栈是维持 LIFO,后进先出,排序的简单数据结构。 栈的基本操作是 push,pop和 isEmpty。 队列是维护 FIFO(先进先出)排序的简单数据结构。 队列的基本操作是 enqueue,dequeue 和 isEmpty。 前缀,中缀和后缀都是写表达式的方法。 栈对于设计计算解析表达式算法非常有用。 栈可以提供反转特性。 队列可以帮助构建定时仿真。
算法分析是一种独立的测量算法的方法。 大O表示法允许根据问题的大小,通过其主要部分来对算法进行分类。
计算机科学是解决问题的研究。 计算机科学使用抽象作为表示过程和数据的工具。 抽象的数据类型允许程序员通过隐藏数据的细节来管理问题领域的复杂性。 Python是一种强大但易于使用的面向对象语言。 列表、元组和字符串都是用Python有序集合构建的。 字典和集合是无序的数据集合。 类允许程序员实现抽象的数据类型。 程序员可以重写标准方法,并创建新的方法。 类可以被组织成层次结构。 类构造器应该总是调用
15.4.总结 在Android 2.3 Gingerbread版本中,NDK引入了对本地Activity的支持。这样即可通过C语言直接编写Activity,从而简化Android游戏的开发过程。
14.3.总结 Android提供了一套高性能的基于共享内存的进程间通信机制,这就是Bound Service。通过它可以创建出远程的Service:先在Android接口描述语言(AIDL)中给出远程接口的定义,随后实现出这个接口,最后通过IBinder对象将它们连接起来。这样就允许了无关的进程之间的相互通信。
13.6.总结 到这里,我们已经观察了几个系统服务:传感器服务、位置服务、Alarm服务以及Notification服务。除此之外,Android还提供了很多其它的系统服务,篇幅所限未能提及。但你可以留意到它们之间的共性,有一些自己的总结。另外,我们在重构UpdaterService时,也用到了IntentService与PendingIntent。
12.3.总结 恭喜,Yamba已经大工告成!你可以稍作调优,加入一些个性元素,然后就可以发布到市场去了。 图12.1 "Yamba完成图"展示了我们目前已完成的部分。届此,图5.4 "Yamba设计图"中的设计我们已全部实现。 图 12.1. Yamba完成图
10.7.总结 到这里,Yamba在能够发消息之外,也能够阅读朋友的消息了。我们的程序仍是完整可用的。 图10.4 "Yamba完成图"展示了目前为止我们已完成的部分。完整图参见图5.4 "Yamba设计图"。 图10.4. Yamba完成图
9.6.总结 到这里,Yamba已经可以从服务端抓取数据,并储存到数据库中了。虽然仍不能将它们显示出来,但已经可以验证,这些数据是可用的。 下图展示了目前为止我们已经完成的部分。完整图参见图5.4 "Yamba设计图"。 图 9.1. Yamba完成图
8.5.总结 我们已经有了一个可用的 Service,只是启动/停止还需要人工操作,仍略显粗放。这个 Service 能够连接到服务端更新朋友的最新消息。目前我们只是把这些消息输出到 Logcat 中,到下一章我们就把它们存进数据库里。 图8.3 "Yamba完成图"展示了目前为止我们已完成的部分。完整图参见图5.4 "Yamba设计图"。 图8.3. Yamba完成图
7.5.总结 到这里,用户可以设置自己的用户名与密码。同时移除原先的硬编码,使得程序更加可用。 图7.6 "Yamba完成图"展示了目前我们已完成的部分。完整图参见图5.4 "Yamba设计图"。 图7.6. Yamba完成图