《数据结构与算法分析 C语言描述》Mark Allen Weiss著,冯舜玺译,机械工业出版社。Weiss教授的经典教材三部曲之一,其中的C语言描述版本,也就是本书,被称为20世纪最重要的30本计算机教材之一。Mark Allen Weiss,1987年在普林斯顿大学获得计算机科学博士学位,师从著名算法大师Robert Sedgewick,现任美国佛罗里达国际大学计算与信息科学学院教授。他曾经担任全美AP(Advanced Placement)考试计算机学科委员会的主席(2000-2004)。他的主要研究方向是数据结构,算法和教育学。中文版翻译质量很好,很难得。
本书是《Data Structures and Algorithm Analysis in C》一书第2版的简体中译本。原书曾被评为20世纪顶尖的30部计算机著作之一,作者Mark Allen Weiss在数据结构和算法分析方面卓有建树,他的数据结构和算法分析的著作尤其畅销,并受到广泛好评.已被世界500余所大学用作教材。
在本书中,作者更加精炼并强化了他对算法和数据结构方面创新的处理方法。通过C程序的实现,着重阐述了抽象数据类型的概念,并对算法的效率、性能和运行时间进行了分析。
《数据结构与算法分析——C语言描述》(原书第2版),英文版的名称是《Data Structures and Algorithm Analysis in C》,作者是:(美)Mark Allen Weiss。原书曾被评为20世纪顶尖的30部计算机著作之一。之所以选这本书,还因为它的简体中文版翻译得相当不错,几乎没有给我的阅读带来什么障碍。^_^
这本教科书所使用的是C语言,也许很多人会说C语言已经过时了,但是,我认为在数据结构的学习中,应该用尽量简单的语言,以免进入了语言的细枝末节中,反而冲淡了主题。实际上在国外的许多大学中(甚至中学),数据结构和算法分析的课程是选用Scheme(Scheme语言是Lisp的一个现代变种、方言,诞生于1975年)的,例如MIT麻省理工大学极其著名的SICP课程。呵呵,语言又能说明什么呢?
学习建议:
算法和数据结构的内容,用最简单的C语言描述会比较清楚,没有必要使用C++和Java的面向对象描述。面向对象编程在这里没啥用处,反而冲淡了学习主题。
初学者,先学习Weiss的《数据结构与算法分析 C语言描述》或者严蔚敏的《数据结构(C语言版)》。对于如何消化掉这本书,我初步给出一个建议:
读上Weiss的《数据结构与算法分析 C语言描述》三遍,能坚持下来,你的收获会很大:
第一遍,通读本书,不要丢掉任何细节,这一遍下来至少不能对书中涉及到的内容存在疑问(如果适当结合课后的习题还是不错的,不过习题不是第一遍的重点);
第二遍,照样通读本书,重点在于解决课后习题,我发现本书的课后习题绝对能让你学会思考并解决问题,提高你的问题解决能力与算法设计能力;
第三遍,复习巩固,注重你的算法设计能力,不能给你一个问题,你去设计十天半个月,训练你的思维力与敏捷力。
然后,再速读C++和Java版的数据结构。
binary search 二分查找 half-interval search 折半查找 logarithmic search 对数搜索 sentinel 哨兵 pivot 基准数 median 中位数,中值 partition 分割 percolate 过滤 sentinel 哨兵 linear time 线性时间...
实现12种不同的算法来跟踪视频和网络摄像头中的对象! 你会学到: 使用Python和OpenCV跟踪视频和网络摄像头中的对象 理解跟踪算法的基本直觉 实现12种跟踪算法 了解对象检测和对象跟踪之间的区别 要求 程序设计逻辑 基本Python编程 MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2...
文章目录1. 算法背景2. BM(Boyer-Moore)算法2.1 坏字符规则(bad character rule)2.2 好后缀规则(good suffix shift)2.3 复杂度及完整代码3. KMP(Knuth Morris Pratt)算法3.1 好前缀 和 坏字符规则3.2 高效构建 失效函数3.3 复杂度及完整代码...
文章目录前言CAP理论C consistency 一致性A availability 可用性P partition tolerance 分区容错性一致性模型弱一致性强一致性强一致性算法需要明确的问题强一致算法: 主从同步强一致性算法:多数派强一致算法:PaxosBasic PaxosMulti Paxos第一个版本:使用Propose...
什么是操作系统 操作系统位于计算机硬件与应用软件之间 是一个协调 管理 控制计算机硬件资源与软件资源的控制程序 为何要有操作系统? 1 控制硬件 2 把对硬件的复杂的操作封装成优美简单的接口(文件),给用户,或者应用程序去使用 注意:一套完整的计算机系统包含三部分 应用程序 操作系统:个人windows,公司linux...
前些天在看一本书,温伯格的《理解专业程序员》,其中提到有的程序员得了第二语言综合征——在学习第三、第四门语言的时候很容易,但是学习第二门简直能要了他们的命。我当时就确定我患了这个毛病,因为我一直想了解Java语言,但迟迟不愿开始,以前一直不知道为什么这么难开始,现在终于豁然开朗。把这本书读完不久,书很薄,我就开始计划打破这个综合征,第...