程式設計珠璣 第7 8 9章

2021-07-25 11:12:12 字數 746 閱讀 1285

基本技巧:

兩個答案比乙個答案好

快速檢驗 量綱檢驗

經驗法則

實踐little定律

系統中物體的平均數量等於物體離開系統 的平均速率和每個物體在系統中停留的平均時間的乘積

任何事都應盡量簡單,但不宜過於簡單

複雜深奧的演算法有時可以極大地提高程式效能

重要的演算法設計技術

儲存狀態,避免重複計算。通過使用一切空間來儲存中間計算結果,我們避免了花時間對其重複計算

將資訊預處理至資料結構中

分治演算法

掃瞄演算法

累加陣列

下界有些程式設計師過於關注程式的效率:由於太在乎細小的「優化」,他們編寫出的程式過於精妙,難以維護。

**調優首先確定程式中開銷較大的步伐,然後進行少量的修改

快取記憶體原理:最經常訪問的資料,其訪問開銷應該是最小的。

將迴圈展開則有助於避免管道阻塞、減少分支、增加指令集的並行性。

**調優的重要原理就是盡量少用它。

效率的角色。不成熟的優化是大量程式設計災害的根源

度量工具。「沒有壞的話就不要修」

設計層面。只有在確信沒有更好的解決方案時才考慮進行**調優

雙刃劍。

高速處理常見情況。

利用等價的代數表示式。

打破函式層次。(函式、巨集、內聯**)

使用哨兵合併測試條件。迴圈展開

修改資料結構,利用等價的代數表示式

合併測試條件

程式設計珠璣第14章

這裡把所有關於堆的操作寫出來。當做標程吧。include include define ms 1025 typedef struct heap heap heap h static void shift heap h,int i else break a i t static void increa...

程式設計珠璣第12章

正文 如何生成0 n 1內的m個隨機整數 1 方法一 比如要從5個數里選出2個數,第乙個數的概率是2 5,第二個數的概率是1 4,然後是0 3 那麼現在已經很清楚了。可以寫 如下 for int i 0 i n i if rand n i m 2 方法二 可以用乙個set,每生成乙個隨機,就去set...

程式設計珠璣第13章

正文 為了解決在12章中的隨機數問題,本章中的目的是對檢視是否在陣列中的情況進行處理。那麼這裡採用了以下幾種方法 1 採用c 的set 2 採用陣列 3 採用鍊錶,順序搜尋,插入時不用移動。結果是陣列的比鍊錶的要快 1 鍊錶需要讀入的記憶體數比陣列大 2 陣列訪問有較好的記憶體相聯性,而鍊錶則不能保...