Re: [问题] 简单易懂的资料结构/算法书籍?

楼主: freeunixer (御剑客)   2018-12-21 16:45:08
※ 引述《xj3zj17 (xj3zj17)》之铭言:
: 如题,原本想去soft_job问的
: 但是小弟比较常看书版 所以在这里问
: 之前爬文很多人都说先学好
: 1. 资料结构 2. 算法
: 再来学真正的程式码
我不太知道是哪些人这样说,麻烦你告诉我那些人在哪里...
资料结构跟程式语言是直接相关的,是语言工具选择如何处理它所面对的资料的方式
你不是直接使用某种语言所提供的结构,就是要自己实作那种结构
你没有任何一种语言的撰写能力,
连 sample code 的语法都看不懂,那些结构对你有什么意义?
算法则是透过程式语言来实作,让语言工具来实现某种跳针式的执行过程.
如果你不会用任何程式语言写段大家一起来跳针~跳针~跳针的 code,
那你看这些东西跟看四格漫画有什么差别?
Turing Award 得主 Niklaus Wirth 写过一本书,
Algorithms + Data Structures = Programs
这句话是什么意思呢?不是 学了算法与资料结构就是会写程式,而是
能在语言工具上运用算法与资料结构的才能叫程式
所以你当然要先学会任何一种语言,
才有能力在那种语言上去建构你对算法与资料结构的运用.
运气挺好, 2018 年的现在,很多我们前一两年还在 OX 第一种程式要学什么的问题,
现在都已经获得解决.
先找本便宜的 Python 的书把 for、 while 先学会,接着可以买一本这个回来刻
图说算法:使用Python
https://www.books.com.tw/products/0010779462

图解资料结构:使用Python
https://www.books.com.tw/products/0010762466
同时你需更多的时间跟精神去找较进阶的 Python 教材学懂 Class,
因为有些结构的实作须要会定义 class 的能力(学 C 的话就要会用 struct)
如果要自己实作某些结构,可能还需要读一点数学,像是 array、hash 之类的.
其实很多算法,都只需要概念的解说,以前教初学者的时候,
甚至有学员都不想听我讲怎么做,只看我丢给她的一本小书,就自己一个个刻给我看了.
结果因为我要她用她学过但我自己不会的别种语言写,于是我也看不懂她在写啥...
只要会任何一种语言工具,你就可以把概念化为实作,
那些 sample code 甚至不必要,因为对初学者,有可能看半天还是不知道它为什那样写.
但若不会任何语言工具,那就只是在看图说故事,那还不如去 momo 或 tinder 算了 (~误
作者: lturtsamuel (港都都教授)   2018-12-21 16:56:00
我觉得不一定欸 我第一本程式的书是刘汝家的算法竞赛入门经典那时候我连指针是啥都不懂
楼主: freeunixer (御剑客)   2018-12-21 17:00:00
我说了,你是看图说故事的话就无所谓.还有些是语言特性除了 C、C++、go 这种不依赖 vm 的静态语言,其实你不懂指针,暂时也无所谓,但要理解 python 的物件及它与 C 的变量 stack 的差别,我就会去提两者的不同
作者: lturtsamuel (港都都教授)   2018-12-21 17:06:00
我的意思是 我是一边学竞技程式一边学程式语言的 所以觉得从算法/资节来入门未必不可能
楼主: freeunixer (御剑客)   2018-12-21 17:07:00
但懂不懂指标是一回事,它写一堆,你不会写也是白搭.我回的是,如果你只要看图说故事,了解概念,尽管用看的.你看人学开车可不可以呢,当然可以.但真的要下去写,至少要会用 for、while 跟一些函式吧.刘汝佳的书难道前两章不是在教这些?还是你直接跳过去?
作者: lturtsamuel (港都都教授)   2018-12-21 17:30:00
有R 我是觉得把图灵完备的部份学一学 就可以进算法了 图灵完备以外的语言特性可以先缓著系统层面的东西也可以缓著
楼主: freeunixer (御剑客)   2018-12-21 17:38:00
所以跟我说的有什么不同呢?我本文里有要求很高吗?我说看得懂相关语法,会用 for、while 跟一些函式不是?
作者: lturtsamuel (港都都教授)   2018-12-21 17:41:00
for while的概念未必是跟着某种特定语言的吧 @@如果只学到for while 那其也不用特别买一本语言书
楼主: freeunixer (御剑客)   2018-12-21 17:42:00
我不知道你想争执什么?我本文里说,学会用任何一种语言你要有本事用 qbasic 写 for、while 那也没有不行啊?你不先会用任何一种语言写 for、while,那就是用看的嘛所以你刘汝佳的书没学它 C 写 for、while,不然用啥写?差别只是因为传统用 C/C++ 这种语言学太费事,所以提 Python,你要高兴,用 C#/Java 去写我也没意见啊
作者: lturtsamuel (港都都教授)   2018-12-21 17:48:00
我其实没有想争执什么如果你觉得有 抱歉 当我什么都没讲过吧
作者: stfang925 (司马铃薯)   2018-12-21 18:35:00
一个最经典学ds、algo的方法 就是拿自己最熟悉的语言把课本上例题写一篇 先学理论再学语言的说法还真的没听过
作者: v7q4 ((.)(.)乳剑双修 -|=>)   2018-12-21 18:58:00
google找解法的能力比较重要
楼主: freeunixer (御剑客)   2018-12-21 22:25:00
你家自主学习不用去学校也行啊,反正你天生写code奇才.
作者: hmcedamon (day蒙)   2018-12-22 00:24:00
先学文法才学说话的婴儿未尝没有啦 但我是不曾见过今天有幸见到野生的 开眼界
作者: puvxyz (影分身之术)   2018-12-29 14:30:00
推一下本文的概念 但推文我看不懂在争什么 最后程式资结算法都要学 只是一般要先学程式比较简单在长时间的学习过程中 很容易稿不清楚在学什么就是

Links booklink

Contact Us: admin [ a t ] ucptt.com