Re: [問題] 簡單易懂的資料結構/演算法書籍?

看板book作者 (離自相空她相)時間5年前 (2018/12/21 16:45), 5年前編輯推噓8(8031)
留言39則, 6人參與, 5年前最新討論串3/3 (看更多)
※ 引述《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 算了 (~誤 -- 讀者審校網試行版(2018/1/1 更新網址) http://readerreviewnet.processoroverload.net/ (哲、史、法、政、經、社,人文翻譯書籍錯譯提報網) ◎洪蘭"毀人不倦"舉報專區 http://tinyurl.com/ybfmzwne 讀者需自救,有錯自己改... -- ※ 編輯: freeunixer (60.250.37.178), 12/21/2018 16:55:01

12/21 16:56, 5年前 , 1F
我覺得不一定欸 我第一本程式的書是劉汝家的算法競賽
12/21 16:56, 1F

12/21 16:56, 5年前 , 2F
入門經典
12/21 16:56, 2F

12/21 16:56, 5年前 , 3F
那時候我連指針是啥都不懂
12/21 16:56, 3F

12/21 17:00, 5年前 , 4F
我說了,你是看圖說故事的話就無所謂.還有些是語言特性
12/21 17:00, 4F

12/21 17:01, 5年前 , 5F
除了 C、C++、go 這種不依賴 vm 的靜態語言,
12/21 17:01, 5F

12/21 17:02, 5年前 , 6F
其實你不懂指針,暫時也無所謂,但要理解 python 的物件
12/21 17:02, 6F

12/21 17:03, 5年前 , 7F
及它與 C 的變數 stack 的差別,我就會去提兩者的不同
12/21 17:03, 7F

12/21 17:06, 5年前 , 8F
我的意思是 我是一邊學競技程式一邊學程式語言的 所
12/21 17:06, 8F

12/21 17:06, 5年前 , 9F
以覺得從演算法/資節來入門未必不可能
12/21 17:06, 9F

12/21 17:07, 5年前 , 10F
但懂不懂指標是一回事,它寫一堆,你不會寫也是白搭.
12/21 17:07, 10F

12/21 17:11, 5年前 , 11F
我回的是,如果你只要看圖說故事,了解概念,儘管用看的.
12/21 17:11, 11F

12/21 17:12, 5年前 , 12F
你看人學開車可不可以呢,當然可以.
12/21 17:12, 12F

12/21 17:13, 5年前 , 13F
但真的要下去寫,至少要會用 for、while 跟一些函式吧.
12/21 17:13, 13F

12/21 17:17, 5年前 , 14F
劉汝佳的書難道前兩章不是在教這些?還是你直接跳過去?
12/21 17:17, 14F

12/21 17:30, 5年前 , 15F
有R 我是覺得把圖靈完備的部份學一學 就可以進演算法
12/21 17:30, 15F

12/21 17:31, 5年前 , 16F
了 圖靈完備以外的語言特性可以先緩著
12/21 17:31, 16F

12/21 17:31, 5年前 , 17F
系統層面的東西也可以緩著
12/21 17:31, 17F

12/21 17:38, 5年前 , 18F
所以跟我說的有什麼不同呢?我本文裡有要求很高嗎?
12/21 17:38, 18F

12/21 17:39, 5年前 , 19F
我說看得懂相關語法,會用 for、while 跟一些函式不是?
12/21 17:39, 19F

12/21 17:41, 5年前 , 20F
for while的概念未必是跟著某種特定語言的吧 @@
12/21 17:41, 20F

12/21 17:42, 5年前 , 21F
如果只學到for while 那其也不用特別買一本語言書
12/21 17:42, 21F

12/21 17:42, 5年前 , 22F
我不知道你想爭執什麼?我本文裡說,學會用任何一種語言
12/21 17:42, 22F

12/21 17:43, 5年前 , 23F
你要有本事用 qbasic 寫 for、while 那也沒有不行啊?
12/21 17:43, 23F

12/21 17:44, 5年前 , 24F
你不先會用任何一種語言寫 for、while,那就是用看的嘛
12/21 17:44, 24F

12/21 17:45, 5年前 , 25F
所以你劉汝佳的書沒學它 C 寫 for、while,不然用啥寫?
12/21 17:45, 25F

12/21 17:47, 5年前 , 26F
差別只是因為傳統用 C/C++ 這種語言學太費事,
12/21 17:47, 26F

12/21 17:47, 5年前 , 27F
所以提 Python,你要高興,用 C#/Java 去寫我也沒意見啊
12/21 17:47, 27F

12/21 17:48, 5年前 , 28F
我其實沒有想爭執什麼
12/21 17:48, 28F

12/21 17:49, 5年前 , 29F
如果你覺得有 抱歉 當我什麼都沒講過吧
12/21 17:49, 29F

12/21 18:35, 5年前 , 30F
一個最經典學ds、algo的方法 就是拿自己最熟悉的語言
12/21 18:35, 30F

12/21 18:35, 5年前 , 31F
把課本上例題寫一篇 先學理論再學語言的說法還真的沒
12/21 18:35, 31F

12/21 18:35, 5年前 , 32F
聽過
12/21 18:35, 32F

12/21 18:58, 5年前 , 33F
google找解法的能力比較重要
12/21 18:58, 33F

12/21 22:25, 5年前 , 34F
你家自主學習不用去學校也行啊,反正你天生寫code奇才.
12/21 22:25, 34F

12/22 00:24, 5年前 , 35F
先學文法才學說話的嬰兒未嘗沒有啦 但我是不曾見過
12/22 00:24, 35F

12/22 00:24, 5年前 , 36F
今天有幸見到野生的 開眼界
12/22 00:24, 36F

12/29 14:30, 5年前 , 37F
推一下本文的概念 但推文我看不懂在爭什麼 最後程式資結演
12/29 14:30, 37F

12/29 14:30, 5年前 , 38F
算法都要學 只是一般要先學程式比較簡單
12/29 14:30, 38F

12/29 14:32, 5年前 , 39F
在長時間的學習過程中 很容易稿不清楚在學什麼就是
12/29 14:32, 39F
文章代碼(AID): #1S7AWOS6 (book)
文章代碼(AID): #1S7AWOS6 (book)