程式提速 程式設計基本功

2021-05-24 01:28:40 字數 790 閱讀 7777

由於現在硬體的高配置,已經很少有程式設計師去關注程式效率的問題,不過相對於做演算法的朋友,效率是永遠的追求。這裡談談我優化程式的一點經驗,供新手討論,高手見笑了。

一、程式設計基本功

前幾天給員工做培訓,隨口出了道題,不想竟難倒了所有人。

題目是這樣的:現行的人民幣面值有1角,5角,1元,5元,10元,20元,50元,100元,試用程式計算出100元錢的人民幣組合數。

這個問題演算法上沒有什麼討論之處,而這種寫法要計算出結果需要幾分鐘,所以如果程式對效率要求比較高,需要注意自己的書寫習慣。

1.次數少的迴圈在外層,次數多的迴圈在裡層。這樣可以減少指標跳轉次數,提高效率。

包括對多維陣列的定義,索引值小的在前。用二維陣列舉例,乙個6*3的矩陣存到二維陣列arr中,要存成a[3][6]。

2.儘量減少迴圈的層數。例子中最後一層迴圈是可以用 i01==(100- i100*100+i50*50+i20*20+i10*10+i5*5+i1+i05/2)/10來表示的。

3.儘量減少每層迴圈的次數。例子中每層迴圈中的判斷條件用<=,例如i20<=5。

當=的時候,只有一種情況,就是只用這一種幣值,其餘全為0。

所以迴圈中不必考慮=的情況,只在結果中把=的情況加上就行。這樣第一層迴圈變為for (i100=0; i100<1; i100++),這一層迴圈也可以去掉。

4.盡量不要使用浮點數。例子中也不能簡單的把每一種幣值擴大10倍來消除浮點數,這樣會增大每一層的迴圈次數。這裡需要做一點特殊處理,具體可以看下面的參考程式。

經過幾步處理以後,程式執行可以控制在一秒以內。

C C 程式設計基本功

c c 程式設計基本功 c 其內容精深博大,任何一塊都信手拈來者不多,究其精者更不多,不論何其原因,最重要一點就是其基本功之不紮實,對基礎性東西不加以精深研究。我也是一樣,經過幾輪經典的面試,讓我痛改以前的不紮實的作風,以此來磨礪自己。一 記憶體管理篇 乙個由c c 編譯的程式占用的記憶體分為以下幾...

程式設計漫談(四) 基本功

讀 程式設計珠璣i 有感 program.program better.program faster.要從事軟體開發,首先要學會程式設計。如何程式設計呢?如何編寫更高效更優雅的程式呢?程式設計珠璣 通過簡單而熟悉的示例,揭示了許多非常有益的程式設計原理和技巧,極具啟發性。基本流程 問題定義 應用框架...

基本功練習 2 26

型別轉換 先看下面一段程式,這段程式摘自 c專家程式設計 如果是有這樣一段程式的話,你永遠無法知道x的值到底是多少,因為這句賦值語句x array d 1 根本不會執行。原因在哪?經過除錯發現程式執行到if語句進行判斷完之後,直接跳過下面一條語句的執行。下面來分析一下原因,因為sizeof求算型別大...