打开主菜单

求真百科

妙趣横生的算法

妙趣横生的算法

《妙趣横生的算法(C语言实现)》理论与实践相结合,旨在帮助读者理解算法,并提高C语言编程能力,培养读者的编程兴趣,并巩固已有的C语言知识。全书分为2个部分共10章,内容涵盖了编程必备的基础知识(如数据结构、常用算法等),编程实例介绍,常见算法和数据结构面试题等。《妙趣横生的算法(C语言实现)》最大的特色在于实例丰富,题材新颖有趣,实用性强,理论寓于实践之中。通过《妙趣横生的算法(C语言实现)》的学习,可以使读者开阔眼界,提高编程的兴趣,提高读者的编程能力和应试能力

《妙趣横生的算法(C语言实现)》附带1张光盘,内容为《妙趣横生的算法(C语言实现)》源代码和作者为《妙趣横生的算法(C语言实现)》录制的5.5小时多媒体教学视频。 《妙趣横生的算法(C语言实现)》可作为算法入门人员的教程,也可以作为学习过C语言程序设计的人士继续深造的理想读物,也可作为具有一定经验的程序设计人员巩固和提高编程水平,查阅相关算法实现和数据结构知识的参考资料,同时也为那些准备参加与算法和数据结构相关的面试的读者提供一些有益的帮助。

目录

目录

图书信息

内容简介

图书目录

编辑推荐

文摘

序言

图书信息

书 名: 妙趣横生的算法

作 者: 杨峰

出版社: 清华大学出版社

出版时间: 2010年04月

ISBN: 9787302216018

开本: 16开

定价: 49.00 元

内容简介

《妙趣横生的算法( C语言实现)》理论与实践相结合,旨在帮助读者理解算法,并提高C语言编程能力,培养读者的编程兴趣,并巩固已有的C语言知识。全书分为2个部分共10章,内容涵盖了编程必备的基础知识(如数据结构、常用算法等),编程实例介绍,常见算法和数据结构面试题等。《妙趣横生的算法(C语言实现)》最大的特色在于实例丰富,题材新颖有趣,实用性强,理论寓于实践之中。通过《妙趣横生的算法(C语言实现)》的学习,可以使读者 开阔眼界,提高编程的兴趣,提高读者的编程能力和应试能力。

《妙趣横生的算法(C语言实现)》附带1张光盘,内容为《妙趣横生的算法(C语言实现)》源代码和作者为《妙趣横生的算法(C语言实现)》录制的5.5小时 多媒体教学视频。

《妙趣横生的算法(C语言实现)》可作为算法入门人员的教程,也可以作为学习过 C语言程序设计的人士继续深造的理想读物,也可作为具有一定经验的 程序设计人员巩固和提高编程水平,查阅相关算法实现和数据结构知识的 参考资料,同时也为那些准备参加与算法和数据结构相关的面试的读者提供一些有益的帮助。

图书目录

第1部分 基础篇

第1章 数据结构基础

第2章 常用的查找与排序方法

第3章 常用的算法思想

第2部分 编程实例解析

第4章 编程基本功

第5章 数学趣题(一)

第6章 数学趣题(二)

第7章 数据结构趣题

第8章 数值计算问题

第9章 综合题

第10章 算法设计与数据结构面试题精粹

……

编辑推荐

《妙趣横生的算法(C语言实现)》:5.5小时教学视频、86个趣味算法题、61个算法面试题,一学就会!帮您开阔眼界,培养编程兴趣,提高编程能力,增强求职的竞争力!

特别提示

《妙趣横生的算法(C语言实现)》配套多媒体教学视频和涉及的实例代码收录于《妙趣横生的算法(C语言实现)》配书光盘中。另外,《妙趣横生的算法(C语言实现)》适合作为相关学校的教材使用。为了方便老师授课,《妙趣横生的算法(C语言实现)》专门配备了相应的教学PPT。

《妙趣横生的算法(C语言实现)》内容生动有趣,寓教于乐,旨在帮您开阔眼界,培养编程兴趣,提高编程能力。增强求职的竞争力。如果您想在程序设计之路上走得更远,请翻开《妙趣横生的算法(C语言实现)》,仔细研读吧,它将助您一臂之力。

《妙趣横生的算法(C语言实现)》特色

◎提供了5.5小时多媒体教学视频,学习起来比较直观。

◎提供了24个数据结构和算法的基础知识实例,便于读者入门。

◎提供了86个经典、有趣、贴近生活、实用性强的算法实例。

◎提供了61个算法及数据结构的面试题。增强求职者的竞争力。

◎内容梯度科学,既适合入门,也适合进一步提高和研究。

◎书中实例用C语言实现,便于读者验证及加深对C语言的理解。

◎既涵盖基本理论,又包含大量实例,寓理论于实践之中。

◎讲解由浅入深,通俗易懂,将复杂问题简单化,读者可以轻松掌握。

文摘

插图:

其实阶乘的数学定义可以用递归函数来简单地描述:

这样的函数称为递归函数,因为该函数本身直接或间接地调用了该函数本身。基于阶乘的递归函数的描述,就不难设计出计算n的阶乘n!的递归算法。

可以看出,使用递归算法解决阶乘问题形式上更加简洁,更易于人们理解。

在设计递归算法时要注意以下几点。

(1)每个递归函数都必须有一个非递归定义的初始值,作为递归结束标志,或递归结束的出口。就像实例3.5所描述的递归算法中的if(n-0)ret啪l;如果一个递归算法中没有这个非递归定义的初始值,那么该递归调用是无法计算出具体的值的(或无法得到结果),同时该递归调用也无法结束。

(2)在设计递归算法时,要解决的问题需具有递归性。例如要计算,2的阶乘n!,n!的定义本身具有递归性。这种所谓的递归性实际上就是一种反复调用自身过程的特性。

(3)虽然采用递归算法解决问题,特别是一些复杂问题,更加方便且容易实现,但是递归方法的运行较低,时间和空间复杂度都比较高,因此对于一些对时间和空间要求较高的程序,建议使用非递归算法设计。

在实际的算法设计中,递归与分治如同一对兄弟,经常结合在一起使用。这是因为,由分治的方法产生的子问题往往都是原问题的更小规模。反复使用分治的手段,可使子问题与原问题类型一致,但规模不断缩小,最终使子问题比较容易求解。既然子问题与原问题的类型一致,这就具有了所谓的递归性,因此可以使用递归的方法用解决原问题的算法去解决同类型的子问题。在第2章中介绍的折半查找算法只是单纯地使用了分治的策略,在下面的实例分析中将使用递归与分治思想相结合的方法进行折半查找算法的设计。

序言[1]

程序 = 数据结构 + 算法——著名的计算机科学家沃斯(Nikiklaus Wirth)

自从著名的计算机科学家沃斯将程序设计形象地用上面的公式表示出来后,这条“黄金定律”便成为了人们学习程序设计,进行程序开发的准则。要想成为一名真正专业的程序设计人员,基本的数据结构基础和常用的算法知识是必须掌握的。脱离了这两点,编写出来的程序一定不是健壮的好程序。

然而单纯地掌握了一些数据结构基础和常用的算法知识也是远远不够的。空洞地掌握所谓的数据结构和算法等理论知识只是纸上谈兵,这些知识必须要依托于一门程序设计语言才具有真正的生命力,才能够转化为真实的程序代码,才能真正地解决实际问题。

本书就是将数据结构基础和常用的算法知识与目前广泛应用、最具群众基础的C语言相结合而产生的。本书的写作思想是理论与实践相结合,以实践为核心,以实例为主要内容。

首先,本书总结归纳了数据结构基础、常用的排序查找算法和经典的算法思想,提纲挈领地阐述了核心的理论知识。这样可以使没有系统学习过或者不熟悉数据结构和算法等知识的读者对这部分知识有一个基本的了解,并掌握基本的数据结构知识和常用而经典的算法思想,以便更加深入地学习本书的其他内容。

其次,本书列举了大量的编程实例,这些题目都按照知识体系进行了内容上的划分。本书列举的这些编程实例都是一些比较灵活有趣的题目,有些题目渗透了巧妙的算法思想,有些题目则必须借助特殊的数据结构才能更加容易解答。通过这些题目的训练,可以使读者开阔眼界,启迪思维,提高编程的兴趣。最重要的是能够提高读者算法设计的本领,提高读者灵活应用各种数据结构的本领,提高读者编写程序解决实际问题能力。

本书有何特点

1.结构清晰,知识全面

本书分为两部分。第1部分是基础知识介绍,主要介绍数据结构的基础知识和一些常用的算法思想。这部分内容为核心的理论知识,可以帮助读者学习和回顾数据结构和算法的知识,使读者在理论水平上有所提高,从而能够更加顺利地深入学习后续内容。第2部分主要是编程实例的介绍,通过一些非常有趣的编程实例使读者开阔眼界,发散思维,提高算法设计本领,提高灵活应用各种数据结构的本领,提高读者编写程序解决实际问题能力。

参考资料

  1. 妙趣横生的算法,搜狗, 2017-02-13