2、程式設計珠璣筆記二演算法
本篇名言:「真實與樸實是天才的寶貴品質。
--斯坦尼斯拉夫斯基」
我一直認為程式設計師花再多時間在資料結構和演算法上都不為過,這也是當碼農昇華為碼神的關鍵。
演算法對軟體系統影響非常巨大,**工作很多時候是進行效能調優工作對此深有體會,乙個稍微少一點的演算法在高併發壓力的時候表現出來的效能就會非常明顯了。
第二章,作者給我們帶來了三個問題以及問題背後的思考。**簡單彙總並盡量簡單描述之。
如下圖1所示:
這個問題作者引入乙個被程式設計師用爛的演算法,就是二分法。不管生活還是工作,二分法估計是居家旅行必備神器。
這個問題有很多解法了,但是最巧秒的莫過於作者左右的方案了。該方案也是ken thompson用來實現文字編輯器中行移動的。(ken thompson是c語言和unix之父)
首先將問題看成陣列ab裝換為ba.
先對a求逆得到arb,然後對b求逆,得到arbr,最後對arbr求逆就得到ba了,翻轉**在時間和空間上都是很搞笑的,所示大師都用的。
任何一種考慮單詞中給所有字母的排列方法都注定要失敗的。
作者的辦法是將單詞中的字母按照字母表順序排序,如deposit的標識就是deiopst,
同理單詞dopiest的標識也是deiopst.
然後見給所有單詞按照標識進行順序排序。
要找某個單詞,主要獲得該標識,然後在順序表中查詢即可。
本章主要是強調基本操作使得問題簡單化。
需要不斷解決問題和反思。
shell程式設計珠璣(2)
1 shell 呼叫 ftp load aaa.txt file sudo ftp n i v open ftpserver user ftpname ftppassword cd ftpdirectory lcd localdirectory mget aaa.txt quit end2 if 的...
程式設計珠璣 學習筆記 2 變位詞
變位詞 相同字母和字母數量,不同的組合順序。如單詞 stop tops 就是變位詞。思路 以單詞的 簽名 為鍵,以具有該鍵的單詞為值。實現 include include include include include include using namespace std mapanagram 簽...
《程式設計珠璣》看書筆記
臨睡前翻看了下 程式設計珠璣 續 這本書,看到第一章就被吸引了,效能監視工具這節從計算素數入手。題目是 列印所有小於1000的素數 簡單直白的方法就是,針對每個小於1000的數字n,從2開始到n 1,如果能被任意乙個數整除,那它就不是素數。如下 int prime int n return 1 in...