编程珠玑
happylife1527
这个作者很懒,什么都没留下…
展开
-
编程珠玑--旋转算法
《编程珠玑》一书对算法是极度推崇,这点意识在我们看书的时候每每都有被灌输。使用一种好的算法往往能使得程序更加漂亮,也很能带给我们程序员某种满足感。 题目:将一个n元一维数组a[n]左移i个位置。例如,当n=8,i=3时,数组abcdefgh旋转为defghabc。请设计一个算法完成这个任务。 1. 块交换法: 分析:将n元一维数组a[n]分解为两块,将第一块存储在临时数组中,将第转载 2012-08-28 10:57:47 · 438 阅读 · 0 评论 -
编程珠玑—代码优化
写在最前面的 再庞大复杂的代码编译器都能接受,编译器会变得越来越聪明,让我们原本的代码更加高效。但是代码执行的多变与不可预测性,如果编译器大肆“优化”,偶尔或者大胆的说“在大多数情况下”,会得到“聪明反被聪明误”的后果,所以编译器非常小心谨慎,一遇到不可预测后果的优化,它就会立即折返,停止这一步的优化工作,因为它不知道程序员的本意是什么,“它怕得罪你”。 程序员要编写容易优化的代码,以帮助转载 2012-08-28 11:21:18 · 627 阅读 · 0 评论 -
编程珠玑--编程技巧
写在最前面的 就像上一篇文章说的,“编程永远是后话”!在有了可靠的问题分析过程和数据结构的选择,能正确运行的“二分搜索”代码出现之前,把其主要的思路先在草稿上实现,即伪代码。但由于伪代码执行结果的不确定性,需要有一个验证的过程。笔者非常不喜欢这个过程,因为这个过程很繁琐,而且推出的结论不一定是正确的(毕竟没有实实在在在机器上运行得到正确的结果),在笔者看来,给一个算法题,知道用什么算法,数据结构转载 2012-08-28 11:34:51 · 475 阅读 · 0 评论 -
编程珠玑--节省空间
一,概述 1)节省空间带来的好处 程序变小使得加载更快;更容易读入高速缓存;需要操作的数据减少从而减少操作时间。 2)节省空间的方法 数学函数式替代要存储的数据。简单例子为:a[i]=i 。如果你要读取数组第i个元素只需要通过函数f(i) = i得到元素值,而不需要将所有数据存储在数组中。转载 2012-08-28 11:43:22 · 444 阅读 · 0 评论 -
编程珠玑——多路归并排序
写在前面的 2012年3月25日买下《编程珠玑》,很期待但不知道它能给我带来什么! 编程珠玑,字字珠玑。但是翻译有点拗口,有时候整句话读下来都不知道在讲什么,多少有点掩饰了珠玑的魅力,真怀疑是不是直接有道翻译了。 位图数据结构法 在“开篇”的里,讲述了排序的一个问题,大意就是,对一个“最多占n位的(就是n位的整数),随机的,无重复的(互异无序)”的整数序列进行排序,那么这个序列的总长度转载 2012-08-28 11:38:21 · 1910 阅读 · 0 评论 -
编程珠玑——AVL树
写在最前面的 手贱翻开了《珠玑》的最后几章,所以这一篇更多是关于13、14、15章的内容。这篇文章的主要内容是“AVL树”,即平衡树,比红黑树低一个等次。捣乱真惹不起红黑树,情况很复杂;而AVL思路比较清晰。《编程珠玑,字字珠玑》910读书笔记——代码优化更新了,做了点关于“哨兵”的笔记。在这篇文章的末尾,笔者还加了对引用调用的“大彻大悟”。 4篇读书笔记:全在这里 AVL树 学习数据结构转载 2012-08-28 11:37:01 · 696 阅读 · 0 评论 -
编程珠玑 求解最大字串和
编程珠玑8.4节讲扫描算法,我看了半天都没看明白,最后自己写了一遍,终于搞懂了,把它记下来,以免今后忘了。 首先,书上的算法是这样写的: ? 1 2 3 4 5 maxsofar = 0 maxendinghere = 0 for i=[0 n) maxendinghere = max(maxendingher转载 2012-08-28 11:14:15 · 371 阅读 · 0 评论 -
编程珠玑--位图法排序
位图法是《编程珠玑》第一章中出现的磁盘排序算法。 题目:一个最多包含n个正整数的文件,每个数都小于n,其中n=10^7,且所有正整数都不重复。求如何将这n个正整数升序排列。 约束:最多有1MB的内存空间可用,有充足的磁盘存储空间。 分析:这个题目的最大亮点是只有1MB的内存空间,我们可以通过计算得出,内存只有1MB可以储存的int(4byte)有10^3*10^3/4=250 0转载 2012-08-28 11:13:06 · 518 阅读 · 0 评论 -
编程珠玑--粗略估算
粗略估算是《编程珠玑》中第七章提到的内容。 这篇文章将“粗略估算”看做是一项工程技术,是程序员必备的一项技能之一。 本人非常同意这个观点。粗略估算是一种把复杂的事情简单化的能力。我们对某个算法的时间复杂度和空间复杂度的估算就是基于这种估算的能力。如果你能较为准确的估算出一个程序的输出结果,如果你能准确估算出这个程序的运行时间,如果你能准确估算出这个项目的开发时间……如果你能拥有这样的能力转载 2012-08-28 11:06:38 · 975 阅读 · 0 评论 -
编程珠玑--位图
刚开始看《编程珠玑》,将网上的诸多资料整理于此,便于自己学习总结,也便于广大朋友相互交流。 位图的应用 编程珠玑 Chapter1 位图或位向量图作为一个集合,表示的这样的一个数据结构: 用字符串 0 1 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 表示集合 {1,2,3,5,8,13}. 位图的应用需要数据有如下的特性:转载 2012-08-28 12:21:14 · 562 阅读 · 0 评论