演算法學習手冊: 寫出更有效率的程式

Learning Algorithms: A Programmer's Guide to Writing Better Code

者:
期:
2022/06/21
9
580522
「一本平易近人的著作,可讓你立即應用進而提升程式的執行效率。書中將教你電腦科學中會用到的基本演算法和資料型別。如果你正在找一份程式設計相關的技術工作,這本書可能會在下次的程式面試中幫助你取得好成績。」
— Zvi Galil

內容簡介

「一本平易近人的著作,可讓你立即應用進而提升程式的執行效率。書中將教你電腦科學中會用到的基本演算法和資料型別。如果你正在找一份程式設計相關的技術工作,這本書可能會在下次的程式面試中幫助你取得好成績。」
— Zvi Galil
喬治亞理工學院
計算學院Frederick G. Storey主任暨名譽院長

論及撰寫有效率的程式時,每位軟體專業人士都需要具備有效率的演算法運作知識。在這本實務書籍中,《Algorithms in a Nutshell》作者George Heineman對於多種語言編寫程式時所用的效能改進關鍵演算法,有簡潔而詳實的介紹。軟體開發人員、測試人員、維護人員將理解演算法如何創造性地解決運算問題。

每章都會以前面章節內容為基礎,藉由清晰的圖示和不斷提供的新基本概念,包括演算法分析,對書中介紹的每個演算法做效能分級。你可以將每章所學到的內容,應用到該章最後的挑戰題中,如同模擬在程式術科面試場上的體驗。

閱讀本書,你將可以:
‧探索電腦科學和軟體工程核心的基本演算法
‧學習有效率解決問題的常見策略,例如:分治法、動態規劃、貪婪方法
‧使用Big-O分析與評估程式的時間複雜度
‧使用現有的Python函式庫和資料結構來解決演算法問題
‧了解重要演算法的主要步驟

產品目錄

第一章 解決問題

何謂演算法?
找出任一串列的最大值
計數關鍵作業
能夠預測演算法效能的模型
找出任一串列的前兩大值
錦標賽演算法
時間複雜度與空間複雜度
本章總結
挑戰題

第二章 演算法分析

以實證模型預測效能
更快的乘法
效能等級
漸近分析
計數所有作業
計數所有位元組
命運之門
二元陣列搜尋
跟π一樣簡單
一舉兩得
整體而言
曲線配適與上限下限
本章總結
挑戰題

第三章 用好雜湊過好生活

值與鍵的關聯
雜湊函式與雜湊值
(鍵, 值)組的雜湊表結構
以線性探測察覺與解決衝突
分別鏈結的鏈結串列
移除鏈結串列的項目
評估
擴充雜湊表
動態雜湊表的效能分析
完美雜湊
疊代處理(鍵, 值)組
本章總結
挑戰題

第四章 堆積向上

最大二元堆積
插入(值, 優先序)
移除優先序最高的值
以陣列表示二元堆積
swim與sink的實作
本章總結
挑戰題

第五章 無魔法的奇妙排序

用交換做排序
選擇排序
二次等級排序演算法的剖析
插入排序與選擇排序的效能分析
遞迴與分治法
合併排序
快速排序
堆積排序
O(N log N)等級演算法的效能比較
Tim 排序
本章總結
挑戰題

第六章 二元樹∼掌握無限

開場
二元搜尋樹
搜尋二元搜尋樹內容值
移除二元搜尋樹內容值
遍歷二元搜尋樹
二元搜尋樹的效能分析
自平衡二元搜尋樹
自平衡二元樹的效能分析
以二元樹實作(鍵, 值)符號表
以二元樹實作優先佇列
本章總結
挑戰題

第七章 圖∼盡在連結

有效率的以圖儲存有用資訊
以深度優先搜尋解開迷宮
採取不同策略的廣度優先搜尋
有向圖
具邊權重的圖
Dijkstra演算法
全點對最短路徑
Floyd-Warshall演算法
本章總結
挑戰題

第八章 本書總結

Python內建資料結構
以Python實作堆疊
以Python實作佇列
堆積與優先佇列的實作
後續的探索

作者介紹

George T. Heineman

George Heineman 是電腦科學教授,在軟體工程和演算法方面具有20年以上的經驗。他是《Algorithms in a Nutshell》(第2版)作者以及O'Reilly多門直播訓練課程講師(包括Exploring Algorithms in Python、Working with Algorithms in Python)。George是Sujiken謎題(數獨的變化版)與Trexagon謎題發明者。

規格

誠品貨碼 / 2682185667001
ISBN13 / 9786263241749
ISBN10 / 6263241748
EAN貨碼 / 9786263241749
頁數 / 264
注音版 / 否
裝訂 / P:平裝
語言 / 1:中文/繁體
尺寸 / 23X18.5X1.4CM
級別 / N:無

退貨說明

退貨須知:

  1. 依照消費者保護法的規定,您享有商品貨到次日起七天猶豫期(含例假日)的權益(請注意!猶豫期非試用期),辦理退貨之商品必須是全新狀態(不得有刮傷、破損、受潮)且需完整(包含全部商品、配件、原廠內外包裝、贈品及所有附隨文件或資料的完整性等)。
  2. 請您以送貨廠商使用之包裝紙箱將退貨商品包裝妥當,若原紙箱已遺失,請另使用其他紙箱包覆於商品原廠包裝之外,切勿直接於原廠包裝上黏貼紙張或書寫文字。若原廠包裝損毀將可能被認定為已逾越檢查商品之必要程度,本公司得依毀損程度扣除回復原狀必要費用(整新費)後退費;請您先確認商品正確、外觀可接受,再行拆封,以免影響您的權利;若為產品瑕疵,本公司接受退貨。

依「通訊交易解除權合理例外情事適用準則」,下列商品不適用七日猶豫期,除產品本身有瑕疵外,不接受退貨:

  1. 易於腐敗、保存期限較短或解約時即將逾期。(如:生鮮蔬果、乳製品、冷凍冷藏食材、蛋糕)
  2. 依消費者要求所為之客製化給付。(如:客製印章、鋼筆刻字)
  3. 報紙、期刊或雜誌。
  4. 經消費者拆封之影音商品或電腦軟體。
  5. 非以有形媒介提供之數位內容或一經提供即為完成之線上服務,經消費者事先同意始提供。(如:電子書)
  6. 已拆封之個人衛生用品。(如:內衣褲、襪類、褲襪、刮鬍刀、除毛刀等貼身用品)
  7. 國際航空客運服務。

若您退貨時有下列情形,可能被認定已逾越檢查商品之必要程度而須負擔為回復原狀必要費用(整新費),或影響您的退貨權利,請您在拆封前決定是否要退貨:

  1. 以數位或電磁紀錄形式儲存或著作權相關之商品(包含但不限於CD、VCD、DVD、電腦軟體等) 包裝已拆封者(除運送用之包裝以外)。
  2. 耗材(包含但不限於墨水匣、碳粉匣、紙張、筆類墨水、清潔劑補充包等)之商品包裝已拆封者(除運送用之包裝以外)。
  3. 衣飾鞋類/寢具/織品(包含但不限於衣褲、鞋子、襪子、泳裝、床單、被套、填充玩具)或之商品缺件(含購買商品、附件、內外包裝、贈品等)或經剪標或下水或商品有不可回復之髒污或磨損痕跡。
  4. 食品、美容/保養用品、內衣褲等消耗性或個人衛生用品、商品銷售頁面上特別載明之商品已拆封者(除運送用之包裝外一切包裝、包括但不限於瓶蓋、封口、封膜等接觸商品內容之包裝部分)或已非全新狀態(外觀有刮傷、破損、受潮等)與包裝不完整(缺少商品、附件、原廠外盒、保護袋、配件紙箱、保麗龍、隨貨文件、贈品等)。
  5. 家電、3C、畫作、電子閱讀器等商品,除商品本身有瑕疵外,退回之商品已拆封(除運送用之包裝外一切包裝、包括但不限於封膜等接觸商品內容之包裝部分、移除封條、拆除吊牌、拆除貼膠或標籤等情形)或已非全新狀態(外觀有刮傷、破損、受潮等)與包裝不完整(缺少商品、附件、原廠外盒、保護袋、配件紙箱、保麗龍、隨貨文件、贈品等)。
  6. 退貨程序請參閱【客服專區→常見問題→誠品線上退貨退款】之說明。
付款/配送