1. 程式人生 > >“珠璣之櫝”系列簡介與索引

“珠璣之櫝”系列簡介與索引

系列博文主要目的:

  收集《程式設計珠璣》和《程式設計珠璣(續)》(以下簡稱《續》)上的演算法和思想,幷包括了一些自己的思考和對相關問題的引申,以備複習和查用。

內容提要:

  主要是演算法收集,結合了《程式設計實踐》 (Practise of Programming)、《程式設計精粹:編寫高質量C語言程式碼》(Writing solid code)和《演算法導論》的部分相關內容,以及自己的思考,無論你是否看過原書,都能夠幫助你快速理解以至於能夠獨立完成這些演算法。我相信自己寫的解釋比原書詳細而易於理解,並且根據我的經驗,對很多問題進行了擴充套件,這也是這個系列命名為“珠璣之櫝”的原因。當然,“買櫝還珠”是不可取的,這個系列雖然收錄了絕大部分有價值的內容,但部分和話題相關但和演算法關係不大的有趣內容限於本人時間有限,只好舍掉。建議時間富足的讀者儘量閱讀原書,並把這個系列的博文當做參考資料。

  出自於《程式設計珠璣》和《續》原書的演算法題和習題有標示。

  本系列博文已經寫完,預計1~3天釋出一篇,目前(2013.7.8)已發完。

索引連結:

原書有但未收錄的內容介紹:

1.基礎的資料結構

  二分查詢樹

2.較少使用的資料結構

  箱

3.基本的排序

  插入排序、希爾排序、快速排序

4.堆和優先順序佇列

  個人更傾向於使用《演算法導論》上介紹的版本

5.馬爾科夫鏈文字生成器

  利用馬爾科夫鏈的性質,經過文字訓練,能夠產生一段自然的隨機文字的程式。

  與《程式設計實踐》相比,由於使用了更精巧的資料結構,佔用空間較少,但也更難理解。

6.以二分查詢(第9章)和質數查詢(《續》第1章)為例的程式碼調優

7.位排序演算法

  類似strcmp(),可查閱習題11.5

8.拓撲排序

  第2章,虛擬碼:

initialize a queue to empty

for each node i

  if pre count of i is 0

    insert i to queue

while queue is not empty

  delete t from the front of queue

  print t

  for each successor s of t

    decrement pred count of s

    if the count is 0

    insert s to queue

 《算導》上的拓撲排序比這個略難理解一些,因為它為了說明,引入了結束時間的概念。

9.關聯陣列

  介紹的是Awk語言的特性,如今的C++裡的map容器還有像Python裡的字典有類似的作用。

10.以牛頓迭代法為代表的數值分析(《續》第14章)

相關推薦

珠璣系列簡介索引

系列博文主要目的:   收集《程式設計珠璣》和《程式設計珠璣(續)》(以下簡稱《續》)上的演算法和思想,幷包括了一些自己的思考和對相關問題的引申,以備複習和查用。 內容提要:   主要是演算法收集,結合了《程式設計實踐》 (Practise of Programming)、《程式設計精粹:編寫高質量C語

[珠璣]二分思想分治法、排序思想

#include <stdio.h> #include <assert.h> int BitCheck(int total,int n,int last) { FILE *input,*output0,*output1; char filename[10

自動化運維系列Ansible的簡介安裝【持續更新···】

zabbix cti 服務 部署安裝 部署 ansible ffffff 執行 gen 自動化運維系列之Ansible的簡介與安裝 自動化運維工具簡介 由於互聯網的快速發展導致產品更新換代的速度逐漸加快,這就導致運維人員的日常工作會大大增加,如果還是按照傳統方式進行維護工

[珠璣]隨機數函式取樣概率

  本節主要受到《程式設計珠璣》第12章隨機取樣問題的啟發,但不僅僅限於隨機取樣問題,進一步地,研究討論了一些在筆試面試中常見的和隨機函式以及概率相關的問題。   閱讀本文所需的知識:     1.對C語言中或其他語言中等價的rand()、srand()有所瞭解。本文不討論種子的設定和偽隨機數的問題;

[珠璣]估算的應用Little定律

  估算的資料主要依賴於所能獲得的資料和常識,有時還包括實踐而不僅僅是理論。它常常作為一個大問題中的子問題,恰當地估算可以省去精確計算的時間和開銷。在計算機領域,所謂常識的內容很寬泛,比如硬碟的傳輸速度、CPU每秒能執行多少指令、各種資料結構的大小甚至每分鐘錄入的單詞數。有些資料是能夠從各種資料中查得的,但僅

[珠璣]字串和序列:左移、雜湊、最長重複子序列的字尾陣列解法、最大連續子序列

  字串和陣列在儲存上是類似的,把它們歸為同一主題之下。本文主要介紹三大類問題和它們衍生的問題,以及相應演算法。   本文主要介紹和討論的問題和介紹的演算法(點選跳轉): 字串迴圈移位(左旋轉)問題 問題敘述:   將一個n元一維向量向左旋轉i個位置。例如,當n=8且i=3時,"abcde

[珠璣]位向量/點陣圖的定義和應用

  位向量/點陣圖是一個很有用的資料結構,在充分利用小空間儲存大量資料方面非常具有優勢,Linux核心中很多地方都是用了點陣圖。同時,它不但基礎,而且用到了很多程式語言的知識,以及對細節的把握,常常作為面試題出現。這裡將要介紹它的實現、操作、應用。   與點陣圖(bitmap)比,我更傾向於用位向量(bit

[珠璣]淺談程式碼正確性:迴圈不變式、斷言、debug

  這個主題和程式碼的實際寫作有關,而且內容和用法相互交織,以下只是對於其內容的一個劃分。《程式設計珠璣》上只用了兩個章節20頁左右的篇幅介紹,如果希望能獲得更多的例項和技巧,我比較推崇《程式設計實踐》 (Practise of Programming)、《程式設計精粹:編寫高質量C語言程式碼》(Writin

Pythoncelery的簡介使用

add 消息代理 tps 程序 一次 時間 代碼 統一 可讀性 celery的簡介 ??celery是一個基於分布式消息傳輸的異步任務隊列,它專註於實時處理,同時也支持任務調度。它的執行單元為任務(task),利用多線程,如Eventlet,gevent等,它們能被並發地執

Android webview系列webview簡介存在的問題

文章目錄 引 一 webview簡介 1.1 Webview 1.2 WebViewSetting 1.2 WebViewClient 1.3 WebChromeClient 1.4 CookieManager

《Linux系統》"皮毛系列"(一) Linux系統的簡介歷史發展

一、Linux系統的簡介 Linux是一套免費使用和自由傳播的類Unix作業系統,是一個基於POSIX和UNIX的多使用者、多工、支援多執行緒和多CPU的作業系統。它能執行主要的UNIX工具軟體、應用程式和網路協議。支援32位和64位硬體。Linux繼承了Unix以網路為核心的設計思想,是一個性

3.3Python數據處理篇Numpy系列(三)---數組的索引切片

數組 rip 多維 分享 href 多維數組 逗號 ada 一維數組 目錄 (一)數組的索引與切片 1.說明: 2.實例: (二)多維數組的索引與切片

2Python全棧系列Tornado的CookieSess

requestPython全棧之路系列之Tornado的Cookie與Sess主要的代碼結構為:#!/usr/bin/env python # _*_coding:utf-8 _*_ import tornado.ioloop import tornado.web class MainHandler(to

2Python全棧系列Django路由視圖

request 配置文件 hello 文章 Python全棧之路系列之Django路由與視圖路由說白了就是與視圖(函數)的對應關系,怎麽說呢,一個路由對應一個視圖,比如上面文章中所提到的那樣,當打開/users/路徑的時候會讓users這個函數來進行邏輯處理,把處理的結果再返回到前端。那麽dj

MongoDB初探系列四:MongoDBJava共舞

ever 文件 basic query find man mongodb next() 入學 因為版本號不同,可能API也有所不同。本次學習用的是3.0版本號。 1、使用的mongodb的jdbc驅動版本號為:mongo-java-driver-3.0.0.jar

緩存系列二:CDN其他層面緩存

級別 spl pecl apache 分布式緩存 -o 真實ip har 分享 緩存系列之二:CDN與其他層面緩存 一:內容分發網絡(Content Delivery Network),通過將服務內容分發至全網加速節點,利用全球調度系統使用戶能夠就近獲取,有效降低訪問延遲,

MongoDB 學習筆記 $or索引關系

其中 沒有 默認 ont mes exp style explain alt $or與索引關系: 對leftT集合的timestamp創建索引 執行$or語句:db.leftT.find({$or: [{ "timestamp" : 5},{"age": 10}]}

Python全棧系列---------面向對象4接口抽象,多繼承多態)

統一 dog blog 水果 創建 設計 概念 fly 支付 接口類與抽像類 在python中,並沒有接口類這種東西,即便不通過專門的模塊定義接口,我們也應該有一些基本的概念 編程思想 歸一化設計:  1.接口類 不實現具體的方法,並且可以多繼承  2.抽象類 可以做一

redis系列數據庫緩存數據一致性解決方案

查詢緩存 src dev 信息 一次 ram ren red getc redis系列之數據庫與緩存數據一致性解決方案 數據庫與緩存讀寫模式策略 寫完數據庫後是否需要馬上更新緩存還是直接刪除緩存? (1)、如果寫數據庫的值與更新到緩存值是一樣的,不需要經過任何的計算,可以馬

SpringMVC 框架系列組件概述配置詳解

align 概述 handle ont htm 配置文件 掃描器 springmvc 解析 在上一篇文章 SpringMVC 框架系列之初識與入門實例 的實例中,我們已經知道,SpringMVC 框架是一個 web 層的框架,本篇文章就詳細解釋一下 SpringMVC 框架