Show 《寫程式前就該懂的演算法》閱讀心得終於找到能看懂的演算法入門書。 (文章同步刊登於部落格,閱讀體驗更好) 作者Aditya Y. Bhargava是Etsy 電商公司的軟體工程師,在前言有提到他是「視覺學習者」,覺得是同一類人。 我買翻譯書都會先去amazon查看原文書的評價,這本評價蠻好的。 關於理解就像我們無法理解同樣辣度的醬料,每個人吃進去所感受到的「體驗」;看書也是,同樣的內容讀進去在每個人腦海的架構跟連結差異也是巨大的。 有別於部分書籍,放了可愛圖片也沒能讓難度降低(把字換地方塞不會變簡單啊啊),不然就是文字跟圖片其實活在兩個世界(假象啊)。 本書作者用了許多有趣手繪插圖和舉例讓整本書趣味性十足,把腦海中的步驟畫出來,讓硬梆梆的主題寫成像故事書一樣,連兩天接續看完。 在腦內小劇場的聚光燈下膜拜著:「高手就是能把複雜內容講的那麼白話啊啊啊!」 閱讀門檻讀電腦書籍時遇到的困難是起始的門檻有點過高了。 以健身房比喻好了,今天從沒接觸過的新手一踏入,卻發現場館的啞鈴最輕5kg起跳;眼前滿身肌肉的教練,從其他會員的風評聽到也是非常有一套無庸質疑的。 但問題是根本連第一下都舉不起來,沒有2kg或是更輕的啞鈴幫助新手成長到能直接使用場館的器材和吃下教練的調教。 大概是這樣的感覺吧,終於知道大O符號還有幾種算法背後的基本應用。 生活連結像是玩1到100的終極密碼,一個個從頭慢慢猜最壞要猜100次。 但用二分搜尋法(Binary Search)每次從中剖半,留下正確的部分再剖半,7次就能猜出來了。 當放大到40億個數字的終極密碼,一個個從頭慢慢猜最壞要猜40億次;後者只要32次就能猜出來了。 假設臉書會在使用者登入時,搜尋使用者名單,有在名單才能順利登入;這樣大量搜尋的情況下,二分搜尋速度就快非常多。 一些閱讀時候覺得「噢很厲害啊但平常好像用不到」,隨著內容推進慢慢冒出「仔細想想也不是沒有」。前面提到的猜數字某種程度上也是資料搜尋。 陣列(Arrays)與連結串列(Linked lists)又或者說「新增資料」。 陣列就像是一群朋友在電影院劃位,臨時冒出新加入的朋友,本來的位置可能無法坐一起,要重新劃位找能塞得下的地方。 但如果用連結串列的形式,就像餐廳的服務生把新訂單加在給廚房的末尾,影響不大;廚師繼續工作從前面開始消化。 但如果是「讀取資料」呢? 電影院的每個位置都有對應的號碼(索引),假設想知道特定位置的銷售狀況馬上能查清楚;而後者餐廳服務生想要找特定訂單,就需要花點時間每張都確認。 拉近距離許多演算法的應用和概念都能在日常生活看到啊~ 記得以前綜藝節目看過那種放觀眾進去賣場,時間內能抱出來都是獎品,觀眾腦海也是跑演算法(?),可能是體積、價錢、路徑;農民在替農產品分類也是依據特徵,用某個算法來分等級加權重,處處都是。 一直到旅遊景點的規劃,可能從物理上的最短路徑考慮、或是從最快的交通速度為出發點、整團人出遊要怎麼在有限的時間內盡量滿足到每個人各自的需求等等。 連結到生活就覺得也不那麼抽象了,有種頭腦體操的感覺。 書籍連結原中文書《寫程式前就該懂的演算法》似乎已絕版,新版書籍為《白話演算法!培養程式設計的邏輯思考》 。 哈佛 CS 50如果暫時對演算法沒什麼興趣,或是看完後想複習;哈佛CS50的第三堂課在講演算法,擷取一些段落。 人肉冒泡排序 Human Bubble Sort兩兩比較交換大小,每輪數字最大的會被排到最後放好。 人肉選擇排序 Human Selection Sort影片在未排序資料找出最小的,依序擺到前面。 排序與音樂最後三分鐘老師用帶有聲音的排序讓同學們感受不同排序法的感覺。 我喜歡透過分享幫助更多朋友,文章回饋、或是任何想法,歡迎透過臉書訊息與我聯繫。如果文章有所幫助,別忘了鼓掌灌溉、手指留香喔! ✧*。٩(ˊᗜˋ*)و✧*。 內容簡介 日常生活的演算問題→ 本書使用大量插圖與生活實例,讓您以最簡單快速的方式進入演算法領域。翻開本書,您可透過不同主題的圖示與說明,輕鬆理解演算法概念及應用,同時向繁雜的驗證程式說bye-bye! 本書前三章為基礎篇: 第 1 章 – 除了學習第一種實用的二進位搜尋演算法外,還將學習大 O 符號。 第 2 章 – 學習陣列和連結串列兩種基礎資料結構。這兩種資料結構用來產生更進階的資料結構,例如雜湊表(參閱第 5 章)。 第 3 章 – 學習許多演算法(例如第 4 章的快速排序演算法)中經常用到的遞迴法。 本書其餘章節將介紹演算法的各種應用: 解決問題的方法 – 這是第 4、8 和 9 章的主題。如果遇到問題卻不知該如何解決,不妨試試分治演算法(第 4 章)或動態規劃演算法(第 9 章)。如果確定找不到解決辦法,就用貪婪演算法(第 8 章)給個近似答案。 雜湊表 – 這是第 5 章的主題。雜湊表是非常實用的資料結構,包含多組鍵值對,就像一個人的姓名與其電子信箱地址,或使用者名稱與其密碼配對一樣。 圖形演算法 – 這是第 6 和 7 章的主題。圖形是網路模型化的途徑,包括社群網路、道路網、神經元網路,或任何其他組合網路。廣度優先搜尋法(第 6 章)和代克思托演算法(第 7 章)是在網路兩點之間搜尋最短距離的演算法,可用來計算兩人之間的分離程度或到達目標的最短路徑。 K 最近鄰(KNN)演算法 – 這是第 10 章的主題。KNN 是一種簡易機器學習演算法,可用來建構推薦系統、OCR 引擎、股票價值預測系統,以及涉及價值預測的所有其他系統或物件分類系統。 下一步 – 這是第 11 章的主題,介紹 10 種值得繼續學習的演算法。 全書程式碼範例使用Python 2.7,請至松崗官網下載範例程式碼。 本書特色 1.涵蓋搜尋、排序和圖形等10種最常用的演算法。 作者Aditya Y Bhargava Aditya Y Bhargava為手工藝品網路市集 Etsy 電商公司的軟體工程師,擁有芝加哥大學電腦學工程碩士學位,工作之餘經營廣受歡迎的插圖貼文技術部落格 adit.io。 目錄 CH 01 演算法概述 詳細資料詳細資料
訂購須知加入金石堂 LINE 官方帳號『完成綁定』,隨時掌握出貨動態:商品運送說明:
提醒您!! 退換貨須知**提醒您,鑑賞期不等於試用期,退回商品須為全新狀態**
|