《新編實用算法分析與程式設計》

《新編實用算法分析與程式設計》

本書既可以作為大專院校計算機專業算法類課程的教材,亦可以作為大中學校計算機競賽活動的培訓教材,還可供計算機軟硬體研發人員參考。

基本信息

內容簡介

《新編實用算法分析與程式設計》新編實用算法分析與程式設計

本書是一部程式設計競賽教程。書中首先講述了算法的基本概念、各種排序與解題的方法及策略,然後論述了初等數論、計算幾何學、搜尋和圖論的有關算法,最後討論了動態規劃。本書不僅從教學的角度詳細講解算法理論,而且從競賽的角度對經典習題進行詳細解析,培養學生靈活運用算法的能力。
本書既可以作為大專院校計算機專業算法類課程的教材,亦可以作為大中學校計算機競賽活動的培訓教材,還可供計算機軟硬體研發人員參考。

編輯推薦

作者編著的《實用算法的分析與程式設計》一書曾經在全國信息學奧林匹克競賽產生了廣泛和深遠的影響。本書是作者在該書基礎上十年磨一劍、精心編寫而成的,反映了近年來程式設計教育和競賽培訓活動出現的新趨勢。全書不僅從教學的角度詳細講解算法的理論,而且從競賽的角度對經典習題進行詳細解析,重在培養學生靈活運用算法的能力。

作者簡介

姓名:王建德//吳永輝著
作者簡介:
作品:《新編實用算法分析與程式設計》

目錄

第1章 緒論 
1.1 算法的基本定義 
1.2 算法的空間複雜度 
1.2.1 壓縮存儲技術 
1.2.2 原地工作 
1.3 算法的時間複雜度 
1.3.1 基本運算 
1.3.2 輸入規模 
1.3.3 輸入情況 
1.3.4 時間複雜度的階 
1.4 最佳化時間效率的方法 
1.4.1 編程實現算法時注意細節最佳化 
1.4.2 尋找解題思路時儘可能考慮最優性 
1.5 實際生活中常見的算法問題 
第2章 排序、順序統計與解題的基本策略 
2.1 計數排序與貪心策略 
2.1.1 計數排序 
2.1.2 貪心策略 
2.2 “二分”思想與快速排序 
2.2.1 分類和分治思想 
2.2.2 快速排序採用二分法 
2.2.3 快速排序和二分法在順序統計問題上的套用 
2.3 堆排序的思想與套用 
2.3.1 在調整中保持堆性質 
2.3.2 建堆 
2.3.3 堆排序 
2.4 數據有序化 
2.4.1 預處理階段的數據有序化 
2.4.2 實時處理階段的數據有序化 
習題 
第3章 初等數論的有關算法 
3.1 計算a和b最大公約數的歐幾里得公式gcd(a,b) 
3.2 計算n的最大互質數 
3.3 歐幾里得公式推廣:計算最大公約數的線性組合 
3.4 計算同餘方程ax≡b(modn)(n>0) 
3.5 求解同餘式組 
3.6 解不定方程ax+by=c 
3.7 初等數論知識的套用 
3.7.1 運用反覆平方法求數的冪模n 
3.7.2 素數的測試 
3.7.3 整數的因子分解 
 習題 
第4章 計算幾何學的有關算法 
4.1 線段的性質 
4.2 計算兩條相交線段的交點 
4.3 判斷任意一組線段中是否存在相交情況 
4.4 計算線段p1p2的中垂線方程 
4.5 計算凸多邊形的重心位置和面積 
4.6 尋找最近點對 
4.7 計算包含平面所有點的二維凸包 
4.8 將凸包問題由二維拓展至三維 
4.8.1 計算三維凸包體積的基本思想 
4.8.2 計算由3個空間點組成的劈面三稜柱的體積v

書摘

第1章 緒論
什麼是算法?為什麼要對算法進行研究?相對於其他信息技術來說,算法的作用是什麼?在實際生活中,算法有什麼套用價值?衡量一個算法好壞的標準是什麼?本章將圍繞這些問題展開討論。
1.1 算法的基本定義
簡單來說,所謂算法(algorithm)就是明確的計算過程,它取一個或一組值作為輸入,並生成一個或一組值作為輸出。亦即,算法就是一系列的計算步驟,用來將輸入數據轉換成輸出結果,
如圖1.1所示。
我們還可以將算法看作是一種工具,用來解決可以抽象出計算模型的問題。在表述該問題時,必須用嚴謹的語言規定所需的輸入/輸出關係。與之對應的算法則描述了一個特定的計算過程,用於實現這一輸入/輸出關係,如下所示。
輸入:由n個數構成的一個序列(a1,a2,…an)。
輸出:輸出一個重排的序列(a1`,a2`,…an`)。,使得a1`≤a2`≤…≤an`。
需要指出的是,問題的表述方式是多樣化的,並不一定像上面例子這么抽象呆板,例如,許多試題就採用了生動趣味的故事形式。而這裡所說的語言嚴謹,是針對抽象計算模型而言。也就是說求解的目標是什麼,給出了哪些已知信息、顯式條件或隱含條件,最後應該用什麼樣的數據形式表達計算結果,必須描述清楚,切不能模稜兩可或者產生歧義。同樣,與問題對應的計算過程可以用自然語言、程式設計語言甚至硬體設計等形式來表達。不論採用哪種形式,解決問題的每一個步驟都必須準確定義,這是由於我們是和計算機打交道,稍有含糊則風馬牛不相及。自然語言傳遞的信息,從語意上來看,可能會有不明之處,但我們處理它們時可根據上下文信息或平時習慣等來推理並準確地接受它,而計算機卻不能。尤其是編程時,要用程式設計的範式語言精
確定義每一個步驟,千萬不要誤以為自己懂了計算機也會懂。
我們衡量一個算法好壞的標準主要有兩個:正確性和時效性。 (1)算法的正確性。如果一個算法使其每一個輸入實例都能在輸出正確的結果後停止,則稱它是正確的。
……

盤點有關算法書籍

算法可以理解為有基本運算及規定的運算順序所構成的完整的解題步驟。或者看成按照要求設計好的有限的確切的計算序列,並且這樣的步驟和序列可以解決一類問題。
《算法之道》
《妙趣橫生的算法》
《機器學習》
《光線跟蹤算法技術》
《遊戲核心算法編程內幕》
《植物的算法美》
《計算智慧型》
《組合數學教程》
《套用組合數學》
《大話數據結構》
《蟻群算法原理及其套用》
《數學建模》
《支持向量機導論》
《國際大學生程式設計競賽例題解》
《數據挖掘原理與算法》
《MATLAB函式速查手冊》
《大學算法教程》
《算法設計》
《多任務下的數據結構與算法》
《集體智慧編程》
《最最佳化理論與方法》
《深入淺出數據分析》
《群智慧型算法及其套用》
《高效程式的奧秘》
《近似算法》
《生物信息學算法導論》
《C數值算法》
《計算數論》
《ACM程式設計競賽基礎教程》
《算法引論》
《STL源碼剖析》
《新編實用算法分析與程式設計》
《並行程式設計》
《信息檢索》
《數據壓縮導論》
《多處理器編程的藝術》
《程式設計中常用的解題策略》
《圖論導引》
《算法設計與分析導論》
《分散式算法導論》
《面向千萬億次計算的算法與套用》
《分散式算法》
《數據結構與算法分析》
《具體數學》
《實時碰撞檢測算法技術》
《世界大學生程式設計競賽》
《算法設計與分析基礎》
《柔性字元串匹配》
《程式設計師實用算法》
《圖論簡明教程》
《現代最佳化計算方法》
《現代密碼學理論與實踐》
《MATLAB語言常用算法程式集》
《編程的本質》
《算法藝術與信息學競賽》

相關詞條

相關搜尋

熱門詞條

聯絡我們