1、編程珠璣筆記一開篇
本文關(guān)鍵詞:編程珠璣,由筆耕文化傳播整理發(fā)布。
1. 編程珠璣筆記一開篇
從事于IT行業(yè),如果不會(huì)編程,那蛤蟆只能呵呵了。
有些人將編程認(rèn)識為敲字,所以一直是碼農(nóng)。有些人將編程認(rèn)識為COPY,所以一直是搬運(yùn)工。我們不是工程師,我們只是IT的搬運(yùn)工~
其實(shí)編程可以不一樣,是一個(gè)洞察力和創(chuàng)造力的集合。需要我們不停磨練編程技巧和基本的設(shè)計(jì)原理。
1、 開篇
是一個(gè)外部排序的問題,題目如下圖1:
的確,一般我們想到的就是歸并排序。
由于內(nèi)存有限,所以一次放入內(nèi)存中的數(shù)量受到了限制。那么意味需要進(jìn)行多趟的讀寫到內(nèi)存,需要更多的IO次數(shù)。
而作者是采用一個(gè)位的表示方法。用一個(gè)10位長的字符串來表示一個(gè)所有元素小于10的簡單的非負(fù)整數(shù)集合。如{ 1 ,2 ,3, 5 , 8}
0 1 1 1 0 1 0 0 1 0
從左到右,表示0,1,2,3,4,5,6,7,8,9。如果為1,說明在集合中,為0說明不在集合中。 這樣本來需要多個(gè)字節(jié)表示的數(shù),通過一個(gè)位就實(shí)現(xiàn)了,空間瞬間就剩下了幾十倍有木有?
這樣就可以使用107個(gè)位,做多就是1.19M左右。但是這么多位中其實(shí)有很多稀疏位可以進(jìn)行壓縮的。偽代碼實(shí)現(xiàn)如下圖2,:
三個(gè)階段就是,1、初始化位數(shù)組,2、判斷該值是否存在,,存在設(shè)置為1。3、根據(jù)位數(shù)組輸出排序文件。
2、 小結(jié):
給人一種耳目一新的感覺,的確是本好書,值得好好品味。后續(xù)比較蛤蟆會(huì)將編程珠璣中的每一章進(jìn)行記錄,根據(jù)需要?jiǎng)h掉作者的一些“廢話”,呈現(xiàn)最精簡同時(shí)也是最核心的部分。
本文關(guān)鍵詞:編程珠璣,由筆耕文化傳播整理發(fā)布。
本文編號:237323
本文鏈接:http://sikaile.net/wenshubaike/mishujinen/237323.html