求真百科歡迎當事人提供第一手真實資料,洗刷冤屈,終結網路霸凌。

妙趣橫生的算法檢視原始碼討論檢視歷史

事實揭露 揭密真相
前往: 導覽搜尋
妙趣橫生的算法

《妙趣橫生的算法(C語言實現)》理論與實踐相結合,旨在幫助讀者理解算法,並提高C語言編程能力,培養讀者的編程興趣,並鞏固已有的C語言知識。全書分為2個部分共10章,內容涵蓋了編程必備的基礎知識(如數據結構、常用算法等),編程實例介紹,常見算法和數據結構面試題等。《妙趣橫生的算法(C語言實現)》最大的特色在於實例豐富,題材新穎有趣,實用性強,理論寓於實踐之中。通過《妙趣橫生的算法(C語言實現)》的學習,可以使讀者開闊眼界,提高編程的興趣,提高讀者的編程能力和應試能力

《妙趣橫生的算法(C語言實現)》附帶1張光盤,內容為《妙趣橫生的算法(C語言實現)》源代碼和作者為《妙趣橫生的算法(C語言實現)》錄製的5.5小時多媒體教學視頻。 《妙趣橫生的算法(C語言實現)》可作為算法入門人員的教程,也可以作為學習過C語言程序設計的人士繼續深造的理想讀物,也可作為具有一定經驗的程序設計人員鞏固和提高編程水平,查閱相關算法實現和數據結構知識的參考資料,同時也為那些準備參加與算法和數據結構相關的面試的讀者提供一些有益的幫助。

目錄

圖書信息

內容簡介

圖書目錄

編輯推薦

文摘

序言

圖書信息

書 名: 妙趣橫生的算法

作 者: 楊峰

出版社: 清華大學出版社

出版時間: 2010年04月

ISBN: 9787302216018

開本: 16開

定價: 49.00 元

內容簡介

《妙趣橫生的算法( C語言實現)》理論與實踐相結合,旨在幫助讀者理解算法,並提高C語言編程能力,培養讀者的編程興趣,並鞏固已有的C語言知識。全書分為2個部分共10章,內容涵蓋了編程必備的基礎知識(如數據結構、常用算法等),編程實例介紹,常見算法和數據結構面試題等。《妙趣橫生的算法(C語言實現)》最大的特色在於實例豐富,題材新穎有趣,實用性強,理論寓於實踐之中。通過《妙趣橫生的算法(C語言實現)》的學習,可以使讀者 開闊眼界,提高編程的興趣,提高讀者的編程能力和應試能力。

《妙趣橫生的算法(C語言實現)》附帶1張光盤,內容為《妙趣橫生的算法(C語言實現)》源代碼和作者為《妙趣橫生的算法(C語言實現)》錄製的5.5小時 多媒體教學視頻。

《妙趣橫生的算法(C語言實現)》可作為算法入門人員的教程,也可以作為學習過 C語言程序設計的人士繼續深造的理想讀物,也可作為具有一定經驗的 程序設計人員鞏固和提高編程水平,查閱相關算法實現和數據結構知識的 參考資料,同時也為那些準備參加與算法和數據結構相關的面試的讀者提供一些有益的幫助。

圖書目錄

第1部分 基礎篇

第1章 數據結構基礎

第2章 常用的查找與排序方法

第3章 常用的算法思想

第2部分 編程實例解析

第4章 編程基本功

第5章 數學趣題(一)

第6章 數學趣題(二)

第7章 數據結構趣題

第8章 數值計算問題

第9章 綜合題

第10章 算法設計與數據結構面試題精粹

……

編輯推薦

《妙趣橫生的算法(C語言實現)》:5.5小時教學視頻、86個趣味算法題、61個算法面試題,一學就會!幫您開闊眼界,培養編程興趣,提高編程能力,增強求職的競爭力!

特別提示

《妙趣橫生的算法(C語言實現)》配套多媒體教學視頻和涉及的實例代碼收錄於《妙趣橫生的算法(C語言實現)》配書光盤中。另外,《妙趣橫生的算法(C語言實現)》適合作為相關學校的教材使用。為了方便老師授課,《妙趣橫生的算法(C語言實現)》專門配備了相應的教學PPT。

《妙趣橫生的算法(C語言實現)》內容生動有趣,寓教於樂,旨在幫您開闊眼界,培養編程興趣,提高編程能力。增強求職的競爭力。如果您想在程序設計之路上走得更遠,請翻開《妙趣橫生的算法(C語言實現)》,仔細研讀吧,它將助您一臂之力。

《妙趣橫生的算法(C語言實現)》特色

◎提供了5.5小時多媒體教學視頻,學習起來比較直觀。

◎提供了24個數據結構和算法的基礎知識實例,便於讀者入門。

◎提供了86個經典、有趣、貼近生活、實用性強的算法實例。

◎提供了61個算法及數據結構的面試題。增強求職者的競爭力。

◎內容梯度科學,既適合入門,也適合進一步提高和研究。

◎書中實例用C語言實現,便於讀者驗證及加深對C語言的理解。

◎既涵蓋基本理論,又包含大量實例,寓理論於實踐之中。

◎講解由淺入深,通俗易懂,將複雜問題簡單化,讀者可以輕鬆掌握。

文摘

插圖:

其實階乘的數學定義可以用遞歸函數來簡單地描述:

這樣的函數稱為遞歸函數,因為該函數本身直接或間接地調用了該函數本身。基於階乘的遞歸函數的描述,就不難設計出計算n的階乘n!的遞歸算法。

可以看出,使用遞歸算法解決階乘問題形式上更加簡潔,更易於人們理解。

在設計遞歸算法時要注意以下幾點。

(1)每個遞歸函數都必須有一個非遞歸定義的初始值,作為遞歸結束標誌,或遞歸結束的出口。就像實例3.5所描述的遞歸算法中的if(n-0)ret啪l;如果一個遞歸算法中沒有這個非遞歸定義的初始值,那麼該遞歸調用是無法計算出具體的值的(或無法得到結果),同時該遞歸調用也無法結束。

(2)在設計遞歸算法時,要解決的問題需具有遞歸性。例如要計算,2的階乘n!,n!的定義本身具有遞歸性。這種所謂的遞歸性實際上就是一種反覆調用自身過程的特性。

(3)雖然採用遞歸算法解決問題,特別是一些複雜問題,更加方便且容易實現,但是遞歸方法的運行較低,時間和空間複雜度都比較高,因此對於一些對時間和空間要求較高的程序,建議使用非遞歸算法設計。

在實際的算法設計中,遞歸與分治如同一對兄弟,經常結合在一起使用。這是因為,由分治的方法產生的子問題往往都是原問題的更小規模。反覆使用分治的手段,可使子問題與原問題類型一致,但規模不斷縮小,最終使子問題比較容易求解。既然子問題與原問題的類型一致,這就具有了所謂的遞歸性,因此可以使用遞歸的方法用解決原問題的算法去解決同類型的子問題。在第2章中介紹的折半查找算法只是單純地使用了分治的策略,在下面的實例分析中將使用遞歸與分治思想相結合的方法進行折半查找算法的設計。

序言[1]

程序 = 數據結構 + 算法——著名的計算機科學家沃斯(Nikiklaus Wirth)

自從著名的計算機科學家沃斯將程序設計形象地用上面的公式表示出來後,這條「黃金定律」便成為了人們學習程序設計,進行程序開發的準則。要想成為一名真正專業的程序設計人員,基本的數據結構基礎和常用的算法知識是必須掌握的。脫離了這兩點,編寫出來的程序一定不是健壯的好程序。

然而單純地掌握了一些數據結構基礎和常用的算法知識也是遠遠不夠的。空洞地掌握所謂的數據結構和算法等理論知識只是紙上談兵,這些知識必須要依託於一門程序設計語言才具有真正的生命力,才能夠轉化為真實的程序代碼,才能真正地解決實際問題。

本書就是將數據結構基礎和常用的算法知識與目前廣泛應用、最具群眾基礎的C語言相結合而產生的。本書的寫作思想是理論與實踐相結合,以實踐為核心,以實例為主要內容。

首先,本書總結歸納了數據結構基礎、常用的排序查找算法和經典的算法思想,提綱挈領地闡述了核心的理論知識。這樣可以使沒有系統學習過或者不熟悉數據結構和算法等知識的讀者對這部分知識有一個基本的了解,並掌握基本的數據結構知識和常用而經典的算法思想,以便更加深入地學習本書的其他內容。

其次,本書列舉了大量的編程實例,這些題目都按照知識體系進行了內容上的劃分。本書列舉的這些編程實例都是一些比較靈活有趣的題目,有些題目滲透了巧妙的算法思想,有些題目則必須藉助特殊的數據結構才能更加容易解答。通過這些題目的訓練,可以使讀者開闊眼界,啟迪思維,提高編程的興趣。最重要的是能夠提高讀者算法設計的本領,提高讀者靈活應用各種數據結構的本領,提高讀者編寫程序解決實際問題能力。

本書有何特點

1.結構清晰,知識全面

本書分為兩部分。第1部分是基礎知識介紹,主要介紹數據結構的基礎知識和一些常用的算法思想。這部分內容為核心的理論知識,可以幫助讀者學習和回顧數據結構和算法的知識,使讀者在理論水平上有所提高,從而能夠更加順利地深入學習後續內容。第2部分主要是編程實例的介紹,通過一些非常有趣的編程實例使讀者開闊眼界,發散思維,提高算法設計本領,提高靈活應用各種數據結構的本領,提高讀者編寫程序解決實際問題能力。

參考資料

  1. 妙趣橫生的算法,搜狗, 2017-02-13