1  精确描述问题 第一章强调的重点在于”精确的描述问题“,这是程序开发的第一步 -- "Problem definition" 1.1  Precise problem statement 1) input: a file containing at most 107 positive intergers (each < 107); any interger occurs twice is an error; no other data is associated with t…
排序算法一直是c语言重点,各个算法适应不用的环境,同时,在面试时,排序算法也是经常被问到的.今天我们介绍下快速排序,简称就是快排. 1.快速排序思想: 快排使用 分治法 (Divide and conquer)策略,将一个序列分为两个子序列.(快排算法中使用到了递归,对递归不太熟的,可以参考我前一篇文章).具体步骤如下: ① 从数列中挑出一个元素,称为"基准"(Pivot): ② 重新排序数列,所有元素比基准小的摆放在最前面,所有元素比基准值大的放在基准的后面(相同的数可以放在任意一边…
该算法也就是所谓的位图算法,用一个int表示32位,也就是实际值为1~32的数. 按照书里说的, 该算法只适合内存有限,而磁盘和时间不限,且数字在1~MAX之间不重复的排序. package demo1; /** * Created with IntelliJ IDEA. * User: wsyang * Date: 13-11-3 * Time: 8:11 * To change this template use File | Settings | File Templates. */ pu…
Select 算法 I 编程珠玑(续)介绍的 Quickselect 算法 选择 N 个元素中的第 K 小(大)值,是日常场景中常见的问题,也是经典的算法问题. 选取 N 个元素的数组的中的第 K 小(大)值,最简单的想法是将数组排序后直接选取. 那么这种方法的时间复杂度是O(N log N). C.A.R.Hoare 提出的 Quickelect 算法的平均时间复杂度达到了 O(N) . 在去递归之后, 是原地算法. 这个算法因为其简洁,高效而被广泛使用. 算法思路的C++实现如下. int…
写在最前面的 手贱翻开了<珠玑>的最后几章,所以这一篇更多是关于13.14.15章的内容.这篇文章的主要内容是“AVL树”,即平衡树,比红黑树低一个等次.捣乱真惹不起红黑树,情况很复杂:而AVL思路比较清晰.<编程珠玑,字字珠玑>910读书笔记——代码优化更新了,做了点关于“哨兵”的笔记.在这篇文章的末尾,笔者还加了对引用调用的“大彻大悟”. 4篇读书笔记:全在这里 AVL树 学习数据结构的时候,有过一次实验课, 题意大概:英文单词出现次数统计.当时选了哈希表,映射(map),AV…
此书的叙述模式是借由一个具体问题来引出的一系列算法,数据结构等等方面的技巧性策略.共分三篇,基础,性能,应用.每篇涵盖数章,章内案例都非常切实棘手,解说也生动有趣. 自个呢也是头一次接触编程技巧类的书籍,而且算法数据结构方面的知识储备实在是薄弱,这么看来,纯粹找虐啊orz.今此行为,歇业养伤,实属无聊.也可说是自打毕业后,看书如打仗,自视身处"安安稳稳的和平年代",闲来了也就闲着,忧患意识甚少,有也退退缩缩.话说回来,这本书不像CLRS那种难打的硬仗(现在想想都脑仁疼啊),<Pr…
学化学的应该都知道chemdraw,这是一款专门绘制化学结构的软件,什么苯环.双键各种word难以搞定的分子式,你可以轻松的用chemdraw完成,可以称得上化学工作者居家旅行必备的良药.其实早在1987年的时候,贝尔实验室的大牛Brian Kernighan(就是K&R教你写C语言中的K)和人一起设计了Chem语言,到现在还能用,似乎在书籍排版上比chemdraw的效果更好.说了这么多,咱不是给Chem做广告,而是为了引出它的另一位创作人Jon Bebtley,也是本文即将谈到的<编程珠玑…
主要是根据编程珠玑后面的Algorithm附录总结了一下这本书里面的经典算法. 1 辗转相减求最大公约数 思想:最大公约数能整除i和j,则其一定也能整除i-j(if i>j) int gcd(int i, int j) { while(i != j) { if(i > j) i-=j; else j-=i; } return i; } 2 快速求取x的n次方 思想:充分利用了已经计算出来的数据防止重复计算来减少了算法运行时间 function exp(x,n) //pre n>=0 //…
Programming Pearls (2nd Edition): Jon Bentley: 0785342657883: Amazon.com: Books https://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880 Programming Pearls, Second Edition https://learning.oreilly.com/library/view/programming-pearls-se…
目录 背景简述 第3章 集合类与数据结构 3.1 抽象优于实现 3.1.1 Collection 3.1.2 Sequence 3.1.3 Associative 3.1.4 Indexed 3.1.5 Stack 3.1.6 Set 3.1.7 Sorted 3.2 访问集合元素的简洁方式 3.2.1 习惯用法 3.2.2 集合.key以及高阶函数 3.3 数据结构的类型 3.3.1 List 3.3.2 vector 3.3.3 set 3.3.4 map 3.4 不可变性和持久性 3.4.…