`
orcl_zhang
  • 浏览: 247220 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

数据结构和与算法分析,准备工作

阅读更多
      最近开始看数据结构与算法分析,机械工业出版社的。今天刚开始看,刚看完第一章。
       惊为天书,实在是太好了,按捺不住激动的心情。为何当初学习数据结构没有如此的激情呢?好了,插一个广告吧,对数据结构感兴趣的,推荐看下。看完这本保证你爱上数据结构,想想现在各个学校学生正在苦读的数据结构教材,也实在是让人痛心,国内啥时候能出几本好书啊。
       刚出炉的读书笔记,大家捧捧场。开始正文。
       先来两个题目,热热身。
       设有一组N个数,要如何确定第k个最大者?
       冒泡吧,这个是我的最初的想法,将结果放到数组里,然后找出第k-1个就可以了。这个是最基本的想法了。
       稍微好点的,将前k个元素读入数组,并以递减排序,接着将剩下的数字,依次读入,小于第k个则直接忽略,大于就放到响应的位置。
       这两个算法是书中给出的,我自己也想了一个其他的。首先可以统计总的数量为多少,如果总数量大于2k。可以取第一个数,以他为基准,对所有的数字进行比较,将大于等于和小于分成两组,并记录两组的数,如果在比较的过程中,大于该数字的数目已经超过k,则直接忽略小于该数字的数,也不用在保存,如果等于k-1则刚好是该数字,至到统计完。如果最后统计结果大于改数的数量大于k,则从大于的组中进行筛选。当然这个方法不是很好,对如何选数字有很强的依赖性和不稳定性。
       那种算法好点呢?如果有大量数据,一百万个数字,k=500000,恐怕都很难快速的计算出结果,要若干天才能计算出来,但是在第7章,会给出一个算法,只要1秒就可以给出结果。
       卖关子,真想一口气看到第7章。
       第二个题目,解决一个流行的猜字谜的游戏。输入一个字母组成的二维数组,找出横,竖,以及斜线方向上的所有的正确的单词组合。
t h i s
w a t s
o a h g
f g d t
      这个改如何解决,遍历所有的组合,然后遍历所有的正确的单词?这个方法太土了。而且如果词库是一本字典,那么计算就需要相当可观的时间。不过这样的问题还是有可能在数秒内解决,即使单词表很大。(伏笔)大家想想有啥好办法? 
       许多问题中,一个重要的观念是,写一个可以运行的程序不难。但是保证这个程序在大的数据集下运行,那么运行时间就成一个很大的问题。我们要学习的就是找到束缚程序速度的瓶颈,并找到合适的方法解决他。
 
       好了这个问题就到这里。复习下数学。
       1,常用数学公式。对公式证明感兴趣的同学可以在网上找相关资料。因为数学这些字符不知道怎么搞,只好来图片了。那位同学知道有写数学公式的好工具也介绍下。







    2,模运算。如果A整除B-C,那么B与C模A同余。记作
 
      3,证明方法。最常用的有归纳法和反证法。
       归纳法有两个部分组成,第一,证明基准情形,就是确定定理对于某个小的值是正确的。第二,归纳假设,如果定理对于k的情况成立,那么对于k+1也应该成立。例子我这里不举了,如果不理解,可以参考高中归纳证明法的方法。
       反证法,通过假设定理不成立,然后推导出某个已知的性质不成立。感觉这里有点错误吧。反证法只能证明定理的错误吧,因为只要假设定理正确,然后推导出一个不正确的性质,即可证明定理的错误。反之,恐怕不行吧。这个应该是充分条件和必要条件的差别。这里应该是书本的错误,不知道读过的有没有发现。
       来个递归的例子。
       我们有个数字,希望他能打印出来,但是我们有这样一个程序print_digit(4),打印4,每次只能打印单个数字。如何实现打印2124呢?
  
void print_out( unsigned int n ) /* print nonnegative n */
{
if( n<10 )
print_digit( n );
else
{
print_out( n/10 );
print_digit( n%10 );
}
}

       不过并不是一个很好的主意,因为mod运算很消耗很大。N%10=N-[N/10]*10. 原来在学校时都是这么做的,看来完全没有可取性。
       递归简论,递归的四大法则:
        1,基准情形。必须有基准情形,就是所谓的已知条件。
        2,不断推进。每次递归都在朝基准情形靠近。
        3,设计法则,假设所有的递归调用都能运行。
        一个反例
int bad( unsigned int n )
{
if(n == 0)
return 0
else
return( bad (n/3 + 1) + n - 1 );
}

       4,合成效益法则。在求解同一问题的同一实例时,切勿在不同的递归调用中做重复的工作。(不懂,不过这个在后面章节会继续讲解)。
        使用递归解决斐波那契数之类的简单数学函数的想法一般不是一个好主意。
        总结:设计好的算法,需要学好数学和数据结构。
分享到:
评论
10 楼 Coder211 2011-04-12  
c++ 第三版的  人民邮电出版社
9 楼 cozilla 2010-12-06  
第一题,比较简单,快排
第二题,先根据字典,构建一棵字典树,然后枚举横竖斜的组合,遍历字典树就行了
8 楼 arust 2010-09-19  
这本书号称上个世纪顶尖的30部计算机著作之一
7 楼 fivestarwy 2010-09-18  
第一个应该是利用快速排序的思想。
第二个难道是动态规划?
6 楼 orcl_zhang 2010-09-17  
恩,谢谢。
5 楼 魔力猫咪 2010-09-17  
建议Java程序员还是买《数据结构与算法分析:Java语言描述第2版》,也是这位写的。老的C翻译版已经绝版。英文好的可以直接看新出的C影印版。真是的,翻译的绝版,影印版倒是新出的。
4 楼 laber 2010-09-17  
现在正需要恶补下数据结构知识,谢谢介绍!
3 楼 harry2007 2010-05-22  
JAVA版的英文书也不错
比清华大学严蔚敏的教材好了不知道多少
2 楼 orcl_zhang 2010-05-21  
congdepeng 写道
是这本吗??


又名: Data Structures and Algorithm Analysis in C:Second Edition
作者: (美)维斯
译者: 冯舜玺
ISBN: 9787111127482
页数: 391
定价: 35.0
出版社: 机械工业出版社
装帧: 平装
出版年: 2004-1-1

恩,感觉很不错。思路清晰,今天事情不多,正在看,很适合自学用。相比之下国内的数据结构的教材真是害人不浅啊。
1 楼 congdepeng 2010-05-21  
是这本吗??


又名: Data Structures and Algorithm Analysis in C:Second Edition
作者: (美)维斯
译者: 冯舜玺
ISBN: 9787111127482
页数: 391
定价: 35.0
出版社: 机械工业出版社
装帧: 平装
出版年: 2004-1-1

相关推荐

    数据结构与算法分析C++描述(第三版)_数据开发_数据结构与算法分析第三版C++_

    《数据结构与算法分析C++描述(第三版)》是一本深入探讨数据结构和算法的专著,由Mark Allen Weiss撰写。这本书以C++编程语言为载体,详细阐述了数据组织方式和解决问题的有效方法,是计算机科学教育领域的重要教材...

    Python数据结构与算法分析(第2版)1

    《Python数据结构与算法分析(第2版)》是一本专为对计算机科学和Python编程感兴趣的读者准备的书籍。本书旨在帮助读者理解数据结构、抽象数据类型和算法的重要性,同时提供Python语言的基础知识和实践应用。 在...

    数据结构和算法分析电子版

    标题“数据结构和算法分析电子版”所指向的知识点,首先是关于数据结构和算法分析这两个计算机科学的基础领域的探讨。数据结构主要涉及的是数据的组织、管理和存储方法,以便于更高效地访问和修改。它包括如数组、...

    数据结构和算法分析C语言描述习题答案(全部)

    本书《数据结构和算法分析》由Mark Weiss著,旨在深入探讨这一领域,提供了丰富的习题以供读者练习和巩固知识。 在本压缩包中,包含的习题答案覆盖了第1至12章,较网上流传的9章更为全面。这意味着我们可以深入学习...

    《数据结构与算法分析 C语言描述》Mark Allen Weiss著 源代码 和 习题解答

    《数据结构与算法分析 C语言描述》是著名计算机科学家Mark Allen Weiss所著的一本经典教材,专注于探讨数据结构和算法的实现与分析。这本书对于学习和理解计算机科学的基础知识,尤其是对想要深入IT领域的程序员来说...

    数据结构和算法python英文原版

    - **理论与实践结合**:书中不仅讲解了数据结构与算法的基本原理,还通过大量的实例帮助读者理解和掌握所学知识。 - **Python语言实现**:选择Python作为实现语言,这不仅是因为Python语法简洁易懂,也是因为它在...

    数据结构与算法 数据结构与算法课后习题答案

    数据结构与算法是计算机科学的基础,它涉及到如何有效地组织和管理数据,以便进行高效地查找、存储和处理。本资源包含的数据结构与算法课后习题答案,是学习这一领域的重要辅助材料,可以帮助学生深入理解和巩固所学...

    最经典的数据结构和算法分析的书

    《最经典的数据结构和算法分析的书》是一本非常全面且深入的数据结构与算法指南,不仅介绍了各种基本和高级的数据结构及算法,还提供了丰富的实例和应用案例,帮助读者更好地理解和掌握这些知识。对于想要深入了解...

    数据结构与算法分析(java语言描述)中文第二版以及习题答案

    数据结构与算法分析是计算机科学中的核心课程,它探讨如何高效地存储、组织和操作数据,以及设计和分析解决问题的算法。《数据结构与算法分析(Java语言描述)中文第二版》是一本专为Java开发者设计的教材,旨在帮助...

    MarkAllenWeiss数据结构与算法分析c++语言描述答案

    《Mark Allen Weiss数据结构与算法分析C++语言描述》是一本经典的计算机科学教材,主要针对数据结构和算法进行深入解析,使用C++编程语言作为实现工具。这本书的第三版提供了全面且详细的解答,帮助读者更好地理解和...

    数据结构与算法(Python版)《数据结构课程设计》教学大纲.pdf

    数据结构与算法是计算机科学与技术专业的重要课程,Python版的数据结构课程设计旨在深化学生对这一领域的理解和应用能力。这门课程以60个学时,4个学分的形式进行,要求学生具备基础的数据结构知识,如链表、树、图...

    算法与数据结构考试题库

    这个"算法与数据结构考试题库"包含了丰富的资源,旨在帮助计算机专业的学生准备算法和数据结构的考试。 首先,我们有两份文档,分别是"数据结构试卷库.doc"和"数据结构试卷.doc"。这些试卷提供了大量的实际考试题目...

    数据结构与算法精讲

    数据结构与算法是计算机科学的基础,对于理解和解决复杂问题至关重要。本书“数据结构与算法精讲”深入浅出地探讨了这两个主题,旨在提升读者在这些领域的认知度,帮助他们打通编程技术的“任督二脉”。 数据结构是...

    东北大学秦皇岛分校数据结构与算法实验报告

    1. 实验目的:明确实验的意义,如理解数据结构的工作原理,提升算法分析和设计能力。 2. 实验环境:列出使用的编程语言、开发工具和操作系统等信息。 3. 实验内容:详细描述每个实验项目,包括所用数据结构、设计...

    数据结构与算法讲义PPT.rar

    数据结构与算法是计算机科学的基础,对于理解和设计高效的软件至关重要。这份"数据结构与算法讲义PPT"压缩包文件提供了深入学习这两个关键概念的资源。以下是对这些主题的详细阐述: 1. 数据结构:数据结构是组织和...

    数据结构与算法课件

    数据结构与算法是计算机科学的基础,对于理解和设计高效的软件至关重要。这个课件集可能是为了帮助学生或自学者深入理解这两个核心概念而准备的。在这个压缩包中,我们期望找到一系列的讲义、幻灯片或其他教学材料,...

    数据结构与算法分析模拟试卷.doc

    在计算机科学领域中,数据结构和算法分析是两个至关重要的概念。它们不仅构成了计算机程序设计的核心,而且是评价一个程序员能力的重要标准。西南交通大学《数据结构与算法分析》课程的模拟试卷,是对学生掌握这两项...

    数据结构与算法综合资料库.rar

    数据结构与算法是计算机科学的基础,对于理解和解决复杂问题至关重要。这个名为“数据结构与算法综合资料库.rar”的压缩包显然包含了一系列关于这个主题的详细资源,特别适合那些正在学习或提升这方面技能的人。 ...

Global site tag (gtag.js) - Google Analytics