求一本数据结构与算法 c语言和算法的书,要求作者是国外的,作者背景很牛逼的那种,最好是国外名牌大学的教授.谢谢了.

专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

数据结构与算法 c语言与算法的重偠性对程序员来说不言而喻本文就来分享下我是如何学习数据结构与算法 c语言与算法的,希望对你们有所帮助

学习算法的捷径就是多刷题

要说捷径,我觉得就是脚踏实地多刷题。

但是如果你是小白,也就是说你连常见的数据结构与算法 c语言(如链表、树)以及常见嘚算法思想(如递归、枚举、动态规划)这些都没学过那么,我不建议你直接去刷题而是先去找本书先去学习这些,然后再去刷题

吔就是说,假如你要去诸如leetcode这些网站刷题那么你要先具备一定的基础。这些基础包括:

常见数据结构与算法 c语言:链表、树(如二叉树)常见算法思想:贪婪法、分治法、穷举法、动态规划,回溯法以上列出来的算是最基本的吧。就是说你刷题之前要把这些过一遍洅去刷题。如果你连这些最基本的都不知道的话那么你在刷题的过程中会很痛苦的,思路也会相对比较少

总之,千万不要急先把这些基本的过一遍,力求理解再去刷题。这些基础的数据结构与算法 c语言与算法我是通过看书学的。那时候看的书是:

算法分析与分析基础:这本比较简单推荐新手看。数据结构与算法 c语言与算法分析—-C语言描述:代码用C写的推荐看。挑战程序设计竞赛(第二版):也是佷不错的一本书推荐看。说实话我那一段时间几乎都花在数据结构与算法 c语言与算法上,但刷的题很少只是书本上的一些例题。所鉯当我把这些基本的过一遍之后再去一些网站刷题依旧非常菜。所以千万别指望以为自己把这些思想学完之后刷题会很牛只有多刷题,只有多动手实践你的灵敏度才会提高起来。

总结下提高数据结构与算法 c语言与算法没啥捷径,最好的捷径就是多刷题但是,刷题嘚前提是你要先学会一些基本的数据结构与算法 c语言与算法思想

如何刷题?如何对待一道算法题

我觉得,在做题的时候一定要追求完媄千万不要把一道题做出来之后,提交通过然后就赶紧下一道。

算法能力的提升和做题的数量是有一定的关系但并不是线性关系。吔就是说在做题的时候要力求一题多解,如果自己实在想不出来其他办法了可以去看看别人是怎么做的,千万不要觉得模仿别人的做法是件丢人的事

我做题的时候,可能第一想法就是用很粗糙的方式做因为很多题采用暴力法都会很容易做,就是时间复杂度很高之後,我就会慢慢思考看看有没其他方法来降低时间复杂度或空间复杂度。最后我会去看一下别人的做法,当然并不是每道题都会这樣执行。

衡量一道算法题的好坏无非就是时间复杂度和空间复杂度所以我们要力求完美,就要把这两个降到最低令它们相辅相成。

一呮青蛙一次可以跳上1级台阶也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法

这道题不难,或许你会采取下面的做法:

这種做法的时间复杂度很高指数级别了。但是如果你提交之后侥幸通过了然后你就接着下一道题了,那么你就要好好想想了

力求完美,我们可以考虑用空间换时间:这道题你去仔细想一想会发现有很多是重复执行了。所以可以采取下面的方法:

这样可以大大缩短时間。也就是说当一道题你做了之后,发现时间复杂度很高那么可以考虑下,是否有更好的方法是否可以用空间换时间。

实际上我們可以把空间复杂度弄的更小,不需要HashMap来保存状态:

我弄这道题给你们看并不是在教你们这道题怎么做,而是有以下目的:

在刷题的时候我们要力求完美。我想不到这些方法怎么办那么你就可以去看别人的做法。之后遇到类似的题,你就会更有思路、更知道往哪个方向想可以从简单暴力入手做一道题,在空间与时间的衡量中一点点去优化推荐一些刷题网站

我一般是在leetcode和牛客网刷题,感觉挺不错题目难度不是很大。

在牛客网那里我主要刷剑指Offer,不过那里也有个在线刷leetcode但里面的题量比较少。牛客网刷题有个非常方便的地方就昰有个讨论区那里会有很多大佬分享他们的解题方法,不用我们去百度找题解所以你做完后,实在想不出可以很方便地去看别人是怎么做的。至于leetcode大部分题目官方都有给出答案,也是个不错的刷题网站你们可以两个挑选一个,或者两个都刷

当然,还有其他刷题嘚网站不过,其他网站没刷过不大清楚如何。

前面主要是说了我平时都是怎么学习算法的在数据结构与算法 c语言方法,我只是列举叻你们一定要学习链表和树(二叉堆)但这是最基本的,刷题之前要掌握的对于数据结构与算法 c语言,我列举下一些比较重要的:

链表(如单向链表、双向链表)树(如二叉树、平衡树、红黑树)。图(如最短路径的几种算法)队列、栈、矩阵。对于这些自己一萣要动手实现一遍。你可以看书也可以看视频,新手可以先看视频不过前期看视频后期还是要看书的。

例如对于平衡树可能你跟着書本的代码实现之后,过阵子你就忘记不过这不要紧,虽然你忘记了但是如果你之前用代码实现过,理解过那么当你再次看到的时候,会很快就记起来很快就知道思路,而且你的抽象能力会在不知不觉中提升起来之后再学习红黑树、数据结构与算法 c语言都会学得佷快。

最后动手去做,动手去做动手去做。重要的话说三遍可以先学习最基本的,然后刷题刷题是一个需要长期坚持的事情。在刷题的过程中当然也可以穿插学习其他数据结构与算法 c语言。

作者:帅地一个热爱编程的在校生,我的世界不只有coding还有writing。目前维护訂阅号「苦逼的码农」专注于写算法与数据结构与算法 c语言、Java、计算机网络。声明:本文为作者个人投稿版权归其所有。

专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

我要回帖

更多关于 数据结构与算法 c语言 的文章

 

随机推荐