算法:C語言實(shí)現(xiàn)

出版時間:2006-9  出版社:機(jī)械工業(yè)出版社  作者:塞奇威克  頁數(shù):702  
Tag標(biāo)簽:無  

內(nèi)容概要

本書是Sedgewick徹底修訂和重寫的C算法系列的第一本。全書分為四部分,共16章。第一部分“基礎(chǔ)知識” (第1~2章) 介紹基本算法分析原理。第二部分“數(shù)據(jù)結(jié)構(gòu)” (第3~5章) 講解算法分析中必須掌握的數(shù)據(jù)結(jié)構(gòu)知識,主要包括基本數(shù)據(jù)結(jié)構(gòu)、抽象數(shù)據(jù)結(jié)構(gòu)、遞歸和樹。第三部分“排序” (第6~11章) 按章節(jié)順序分別討論基本排序方法 (如選擇排序、插入排序、冒泡排序、希爾排序等) 、快速排序方法、歸并和歸并排序方法、優(yōu)先隊列與堆排序方法、基數(shù)排序方法以及特殊目的排序方法,并比較了各種排序方法的性能特征。第四部分“搜索” (第12~16章) 在進(jìn)一步講解符號表、樹等抽象數(shù)據(jù)類型的基礎(chǔ)上,重點(diǎn)討論哈希方法、基數(shù)搜索以及外部搜索方法。    書中提供了用C語言描述的完整算法源程序,并且配有豐富的插圖和練習(xí)。作者用簡潔的實(shí)現(xiàn)將理論和實(shí)踐成功地結(jié)合了起來,這些實(shí)現(xiàn)均可在真實(shí)應(yīng)用上測試,使得本書自問世以來備受程序員的歡迎。    本書可作為高等院校計算機(jī)相關(guān)專業(yè)算法與數(shù)據(jù)結(jié)構(gòu)課程的教材和補(bǔ)充讀物,也可供自學(xué)之用。

作者簡介

Robert Sedgewick 擁有斯坦福大學(xué)博士學(xué)位(導(dǎo)師為Donald E.Knuth),普林斯頓大學(xué)計算機(jī)科學(xué)系教授,Adobe Systems公司董事,曾是Xerox PARC的研究人員,還曾就職于美國國防部防御分析研究所以及INRIA。除本書外,他還與Rhilippe Flajolet合著了《算法分析導(dǎo)論》一書。

書籍目錄

Contents  Chater 1.Introduction    1.1  Algorithms    1.2  A Samle Problem-Connectivity    1.3  Union-Find Algorithms    1.4  Perspective    1.5  Summary of Topics  Chapter 2.Priciples of Algorithm Anaylysis    2.1 Implementation and Empirical Analysis    2.2  Analysis of Algorithms    2.3  Growth of Functions    2.4  Big-Oh notation    2.5  Basic Recurrences    2.6  Examples of Algorithm Analysis    2.7  Guarantees,Predictions,and LimitationsData Stuctures  Chapter 3.Elementary Data Structures    3.1  Building Blocks    3.2  Arrays    3.3  Linked Lists    3.4  Elementary List Processing    3.5  Memory Allocation for Lists    3.6  Stuings    3.7  Compound Data Sturctures  Chapter 4.Abstract Data Types  Chapter 5.Recursion and TreesSorting  Chapter 6.Elementary Sorting Methods  Chapter 7.Quicksort  Chapter 8:Merging and Mergesort  Chapter 9:Priority Queues and Heapsort  Chapter 10:Radix Sorting  Chapter 11:Special-Purpose SortsSearching  Chapter 12.Symbol Tables and BSTs  Chapter 13.Balanced Trees  Chapter 14.Hashing  Chpater 15.Radix Search  Chapter 16.External SearchingIndex

媒體關(guān)注與評論

  對于在數(shù)學(xué)分析方面不算熟練且需要留意理論算法的普通程序員來說,本書是一本可讀性很強(qiáng)的優(yōu)秀讀本。他們應(yīng)該會從中獲益良多?!  猄teve Summit,《C Programming FAQs》的作者  Sedgewick有一種真正的天賦,可以用易于理解的方式來解釋概念。書中采用了一些易懂的實(shí)戰(zhàn)程序,其篇幅僅有一頁左右,這更是錦上添花。而書中大量采用的圖、程序、表格也會極大幫助讀者的學(xué)習(xí)和理解,這使本書更顯得與眾不同?!  猈illiam A. Ward,南亞拉巴馬大學(xué)

圖書封面

圖書標(biāo)簽Tags

評論、評分、閱讀與下載


    算法:C語言實(shí)現(xiàn) PDF格式下載


用戶評論 (總計59條)

 
 

  •   本書將基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)和相應(yīng)算法都解釋得很詳細(xì),作者的解釋是一種引導(dǎo)性的,很適合初學(xué)者
  •   對算法與數(shù)據(jù)結(jié)構(gòu)講解的很透徹,是一本值得仔細(xì)閱讀理解的好書。
  •   看這本書會比更容易理解數(shù)據(jù)結(jié)構(gòu),書中代碼也都是c的實(shí)現(xiàn)
  •   東西講的很清楚,但是代碼中有些不太好習(xí)慣,很是就開始了ADT介紹其實(shí)知道ADT才知道頭文件的作用,。。。。
  •   質(zhì)量一般,內(nèi)容不錯
  •   還是這本好
  •   可以接受的價格!書本內(nèi)容很好!值得購買!
  •   這本書很適合程序員參考,書中的代碼很經(jīng)典。
  •   印的著實(shí)粗糙~字體看上去不舒服
  •   書的內(nèi)容不錯,書的質(zhì)量真的不咋的,而且,英文看得壓力本來就大,現(xiàn)在看得就是難受了。。。。
  •     將算法,算法代碼居然是錯誤的,我暈死
      第5章遞歸與樹
      程序5.12背包問題
      
      int knap(int cap);
      誰看過這個算法?完全不正確......
      
      
      求推薦,中文算法書,要求算法代碼絕對無錯誤的,謝謝
      
  •     手頭有國外的英文版3rd eidition,也有機(jī)械工業(yè)的中文版3rd eidition。可是為什么中文版比英文版薄了好多?
      
      看過國內(nèi)的英文版,或者國外英文版的同學(xué)誰能說一下,是不是翻譯版有刪減啊。
      
      我沒仔細(xì)看,紅黑樹那一節(jié),我的英文版有12頁左右,可是中文版大概只有7頁。
      
      沒人發(fā)現(xiàn)這個問題嗎?
  •       花了四個月時間,終于將此書第1-4部分讀完了,放下書的那一刻無比高興哈哈。
        Robert Sedgewick老爺子真不是蓋的,對算法的講解清晰易懂,C語言程序簡短緊湊,令人稱絕,實(shí)際上很多算法實(shí)現(xiàn)堪稱完美:紅黑樹的插入,Batcher odd-event sort,漢諾伊的遞歸結(jié)構(gòu),背包的DP,快排的劃分,原地歸并,……你很難能再去減少一行或省去一個循環(huán)。自己寫過那么多年的C程序,也只能嘆息無法達(dá)到這種準(zhǔn)確、精煉、緊湊同時做到極高標(biāo)準(zhǔn)的水平。話說這書還是1997年出版的呢。
        跟《算法導(dǎo)論》做個小比較:《算法導(dǎo)論》講太多算法性能分析和數(shù)學(xué)證明了,對更注重工程的一般軟件人員,這本算法書明顯更合適。
        唯一可惜的是,書里經(jīng)常提到的第5部分字符串算法一直沒有出版,實(shí)際上出版的第5部分是圖算法,不知道他老人家還有沒有精力把那部分也
        結(jié)論:可手邊常備:-)
      
  •     美國大學(xué)本科生課程“Algorithm and Data Structure”的指定教材,我偷懶,下了中文版來看,實(shí)在是忍不了翻譯,看回英文版。明明很簡單的一句話能叫譯者說的不明所以。真是譯成這樣不如不譯啊。。。
  •     翻譯質(zhì)量較差,像是未加任何處理的英文直譯,不符合中文閱讀習(xí)慣,另有不少不知所云的地方。如188頁的《6.10 關(guān)鍵字索引統(tǒng)計》中有這樣的敘述:“一種方法是計算0的個數(shù),然后再次掃描輸入a,使用兩個表示統(tǒng)計數(shù)的一個數(shù)組,把元素分布在臨時數(shù)組b中?!?。為了不影響閱讀,我一般都直接看代碼(有些代碼也有bug,如172頁程序6.5 希爾排序的實(shí)現(xiàn))。。。。挺影響閱讀心情的
  •     Prof. Sedgewick is a noted authority on searching and sorting algorithms, and a former student of Knuth's. The text is authoritative, lucid, and detailed. It is also full of mistakes, poorly edited, and much of the code has serious and not so serious bugs.
      不說算法的好與壞,至少做到正確,不誤人子弟吧,代碼中充斥著bug,加上折磨人的翻譯,難道非要自虐不成嗎?
  •     書是相當(dāng)?shù)暮?,翻譯的超級的爛啊,感覺是直譯的,直接按照英文單詞順序翻譯過來的,還有翻譯錯誤的地方,簡直無語了,拿本詞典自己看也比看中文的強(qiáng)。 還建議看看那本算法分析導(dǎo)論,數(shù)學(xué)知識比較多,寫的很好,不愧是算法大師和算法大師的高徒啊,呵呵。
  •     也許關(guān)于算法方面的最大的誤解,就是沒有意識到它是由關(guān)系密切而又非常不同的兩個部分組成的。
      
      對于一個給定的問題,選擇哪一種算法才是最適合的?選定算法之后,在編程環(huán)境中又是如何實(shí)現(xiàn)這個算法,是使用已有的庫還是自己從頭開始編寫,是用 X 語言還是 Y 語言?這個算法實(shí)現(xiàn)和已有的程序結(jié)合得如何,需要對它進(jìn)行修改嗎?它的實(shí)際運(yùn)行速度是快是慢?
      
      以上這些,都是算法在實(shí)現(xiàn)階段需要考慮的問題,這些問題主要是和工程相關(guān)的,是大部分編程人員日常工作中最常見也是最重要的部分。
      
      另一方面,設(shè)計一種嶄新的算法,或者改進(jìn)一個已有的算法,并對這個算法進(jìn)行嚴(yán)密的分析以研究其性能特征,將它和已有的算法進(jìn)行對比以判斷孰優(yōu)孰劣,等等,這些問題主要是和數(shù)學(xué)相關(guān)的,由一些算法 Guru 和研究人員(在守衛(wèi)森嚴(yán)的科技大樓內(nèi)秘密地)進(jìn)行。
      
      當(dāng)然,將算法簡單地劃分為實(shí)現(xiàn)和設(shè)計/分析兩部分有點(diǎn)過于簡單化了,因?yàn)樗鼈儗?shí)際上是無法分割的一個整體,比如說,離開分析的話,我們又怎么能確定算法的效率呢?而離開了效率的話,也就無所謂算法了,因?yàn)槿绻豢紤]時間和空間效率的話,那么問題的任何一個正確的解就足以解決所有問題了。
      
      不過,即便如此,我們也應(yīng)該注意到,目前被廣泛使用的絕大部分算法,都已經(jīng)經(jīng)過了詳細(xì)而透徹的分析了,在很多時候,編程人員要做的就是根據(jù)已有的算法資料,選擇一個合適的算法,然后實(shí)現(xiàn)它,這就完了,至于對算法進(jìn)行分析的場景,一般來說也就非常少了。
      
      如果對前面的幾段話做一個總結(jié),我們就得出了一個結(jié)論:比起學(xué)習(xí)算法分析,學(xué)習(xí)算法實(shí)現(xiàn)的相關(guān)知識要來得更有用和更實(shí)用。
      
      然而,不幸的是,市面上銷售的大部分算法書籍,以及人們推薦得最多的算法書籍,基本都是以算法分析為主,在這類算法書中,一個個優(yōu)美的算法被分解成支離破碎的數(shù)學(xué)研究對象,在這些書里面,你會看見嚴(yán)謹(jǐn)?shù)臄?shù)學(xué)論證,完整的數(shù)學(xué)分析和(數(shù)學(xué)家寫算法書賺外快時最喜歡用的難看的)偽代碼,但是卻看不見從低效算法逐步向高效算法推進(jìn)的求精過程,看不見不同算法/數(shù)據(jù)結(jié)構(gòu)之間的相似性和差異性,因?yàn)樗鼈兌急恍⌒牡馗綦x開來了。
      
      這本《Algorithms in C》最難能可貴的地方就是,它是一本關(guān)注算法的實(shí)現(xiàn)和實(shí)用性的算法書:書中的示例程序使用的都是真實(shí)可運(yùn)行的 C 代碼;它詳細(xì)地講解了很多實(shí)際使用算法時會遇到的問題,比如說,內(nèi)存占用、浮點(diǎn)數(shù)、隨機(jī)算法的安全性和庫的移植等問題;它還給出算法的完整的 API 和 client 端示例,并列出算法的實(shí)驗(yàn)分析結(jié)果,配合簡短的描述來完整地展示算法的運(yùn)行效率。
      
      以上這些,都是算法在實(shí)際應(yīng)用中需要關(guān)注的問題,但是,即使拋開這些實(shí)用性優(yōu)點(diǎn)不說,這本書也是一本寫得非常好的算法書:書中使用了大量的圖片和圖表來演示算法的完整執(zhí)行過程,并且章節(jié)的安排也非常合理,新內(nèi)容可以很自然地引申出來,沿著書一直讀下去可以看到如何對一個算法進(jìn)行改進(jìn),從低效到高效,再到最優(yōu)化,這是學(xué)習(xí)算法中最有趣而又最能體現(xiàn)算法之美的地方,而這些有趣的部分,在那些將算法分解得支離破碎的算法分析書中,是不可能看到的。
      
      ---
      
      補(bǔ)充:
      
      似乎有部分評論說這本書的翻譯不好,這套書的中文版和英文影印版我都有,我覺得這本書的翻譯蠻不錯的,也沒發(fā)現(xiàn)什么明顯的錯誤。
      
      而且這套書原文的倒裝句比較多,讀起來比較慢,我個人還是推薦買中文版。
  •     用圖示化方式說明算法的特點(diǎn),是本書的一大特色。
      只是翻譯者實(shí)在是欠罵,這么垃圾的翻譯還不如不譯,糟蹋了這么好的一本書!!
      封面上都寫上你的名字了,都不怕遭人罵嗎?!
      留給別人翻譯多好?。?!
  •     作者的主頁上好像也找不到,只有書中的code和errta(話說我提交的edition3 的一個error貌似也無人理睬。)不知道有沒有人愿意討論下里面的習(xí)題?我剛看到棧那里。
      
      這個評論到底要多長才行……
  •     P32 表2-4
      “當(dāng)M增加一倍時,順序搜索的時間也增加一倍,但二分搜索幾乎不變”
      
      其中M當(dāng)為N。
      
      因?yàn)轫樞蛩阉鞯臅r間復(fù)雜度跟MN正比而二分搜索跟MlogN正比,顯而易見M增加時兩種算法耗時均線性遞增。
      
      嗯,我的評論很短么?居然不讓發(fā)表??好吧,我刷個屏看看。
      刷屏刷屏刷屏刷屏刷屏
  •     除去圖算法,第一至第四部分頁數(shù)不多,但是內(nèi)容詳實(shí)。學(xué)算法最需要的是什么?是想象力!想象數(shù)據(jù)結(jié)構(gòu)在內(nèi)存中是如何變化的,查看其中的奧秘學(xué)習(xí)其中的思想??墒撬惴y學(xué)啊,因?yàn)橛行?fù)雜算法不好想象。這本書從數(shù)據(jù)結(jié)構(gòu)到排序到搜索,介紹了每個分類里面的幾大經(jīng)典,各個都有配圖,比如原位排序的數(shù)值調(diào)整,二叉搜索樹的旋轉(zhuǎn)平衡,都有配圖詳細(xì)說明?! m不厚,但是經(jīng)典的都寫到了,而且言簡意賅通俗易懂??焖倥判颉⒍雅判?、歸并排序等常用排序,二叉搜索、紅黑樹、哈希表、Trie樹、外部搜索,面面俱到。內(nèi)容詳實(shí),配圖生動,非常難得的一本好書,五星推薦。
  •     書是好書,不過還是推薦看原版的,翻譯得實(shí)在。。。而且明顯感覺不同的章節(jié)是不同的人翻的,雖然只寫了一個譯者
  •     在小百合算法版看到 ufx222 對這本書的評價才注意到這本書。引用他的評價:
      
      “只推薦C語言的版本;而且不推薦看中文版,中文版翻譯得非常之差。這是一本非常重視算法實(shí)現(xiàn)的書,即使是資深的優(yōu)化程序的人也不會對Sedgewick的C程序有不滿。作者對于基本算法都給了很多很多形象的圖示?!?br />   
      看這本書前言的時候注意到作者 Robert Sedgewick 是 Knuth 的學(xué)生。
      
      當(dāng)參考書看過書中的幾段,如 quicksort, merge-sort, binary search tree, red-black tree。書中算法的實(shí)現(xiàn)的確很精巧。比如 merge 的實(shí)現(xiàn),書中使用的方法在拷貝數(shù)組時,將其中一個數(shù)組反序拷貝,這樣合并時就可以很方便的處理數(shù)組邊界。介紹過 2-3-4 tree 以后再介紹了 red-black tree,通過將這兩者聯(lián)系起來使讀者更容易理解 red-black tree 的思想。在 balanced search tree 一章末尾還有各種平衡搜索樹在實(shí)際使用中性能的比較。我就是看到這個才明白 C++ STL 中的 map 等數(shù)據(jù)結(jié)構(gòu)為什么使用 red-black tree 而不使用其他的平衡搜索樹。
      
      看過的只是書中的一小部分,但已經(jīng)感受到本書對算法實(shí)現(xiàn)的重視,有不少漂亮的 trick。書中實(shí)現(xiàn)的代碼可以從作者網(wǎng)站上下載。
  •   請問英文版在哪買的?
  •   我在taobao上找的打印版,eng原本,不是機(jī)械他們的出的。大概70rmb吧。
  •   四個月?
    看我能不能用四個月把這個本書看完。
  •   沒錯,直接讀代碼更好,看文字很郁悶...
  •   英文原版的已經(jīng)看到500多頁,沒遇到很多bug。
    Prof. Sedgewick is a noted authority on searching and sorting algorithms, and a former student of Knuth's. The text is authoritative, lucid, and detailed. 對。
    It is also full of mistakes, poorly edited, and much of the code has serious and not so serious bugs. 錯。
  •   其實(shí)說白了就是學(xué)術(shù)也給工業(yè)的區(qū)別。不同目標(biāo)的方向和側(cè)重點(diǎn)都不同
  •   看完第一章併查集,我就被驚呆了,還不說那些NB的配圖~~(>_<)~~
  •   《圖算法》還有一個優(yōu)點(diǎn),Sedgewick一直在書中引導(dǎo)讀者去思考各種圖算法的共性,在更高的層次上統(tǒng)一地看待圖算法
  •   @Silverbullettt
    《圖算法》我還沒怎么讀,但是有這本書的保證,還是很值得期待的。
  •   推薦 Algorithms 4th edition,算是本書的“升級版”(雖然示例代碼全變成了 Java 比較悲劇
  •   我怎么覺得讀起來難受的很,不通順
  •   你們讀過么?? 就亂評價
  •   翻譯之爛已經(jīng)到了無法忍受的地步,我就想知道用谷歌翻譯還會比這更爛么,這個叫霍紅衛(wèi)的大博導(dǎo)的母語是不是漢語,還是她翻譯之后根本就沒勇氣再自己審一遍。
  •   神一般的翻譯
    我看哭了
    如果有空真該直接看英文的
  •   是啊,逼我們不得不學(xué)好英語啊
  •   英文版本的哪有賣啊???????????
  •   第一章,第一段就看不懂,句子p也不通。
  •   嗯,這個錯是中文版里的,我手頭無英文版的c版本,下載了一個c++的,該版本無此問題。
  •   別挑了,我拜讀了這位大姐翻譯的《圖算法》,里頭N多小錯誤。。。
  •   不過書是好書!我很喜歡,塞吉威克老哥的書代碼很漂亮
  •   嗯,對于我這種看不進(jìn)去算法導(dǎo)論的人還是挺適合的……
  •   據(jù)說翻譯不太理想。呵呵。有原文電子版么?
  •   我也想求英文電子版
  •   谷歌學(xué)術(shù)里面都有
  •   我也這么覺得,中文版的有時感覺那個句子實(shí)在太別扭了
  •   我也很想說,剛看幾頁實(shí)在受不了了...
  •   聽你說這么說,果斷買一本
  •   謝謝你的評論
  •   昨晚剛買了中文版的....
  •   為什么只推薦c版的,java版的怎么樣?
  •   唉,買了中文版的了,讀了前幾頁,覺得有點(diǎn)別扭。。。
  •   我非常非常喜歡這本書的代碼實(shí)現(xiàn),Sedgewick真是了不起
  •   出第4版了,java的
  •   能看英文版的就別看中文版的吧;翻譯版的通常比較爛。
  •   只看了前面一點(diǎn) 目前看了不少數(shù)學(xué)方面的習(xí)題 很不滿 額
 

250萬本中文圖書簡介、評論、評分,PDF格式免費(fèi)下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號-7