讀程式或者演算法的時候,有經驗的人可能多看幾步,但是沒有誰能看幾十甚至幾百步的,程式我們知道是一句一句執行的,在除錯的時候叫單步執行,程式是存在跳轉和分支的,在考試的時候經常要回答結果以考察對演算法的分析能力,又不能帶個筆記本到考場,所以程式要通過在草稿紙上手推,最好不要心算,手算麻煩一些,但是每一步的結果都寫在紙上,不會出錯。
這個是個陣列迴圈右移的程式
#include #include using namespace std;int main()
v[0] = t;
}for (int i = 0; i < 5; i++)
return 0;
}
對於中間的兩個for迴圈,我們加上行號
10for (int i = 0; i < 3; i++)
11 17 v[0] =t;
18 }
下面就來在草稿紙上單步執行,變數沒變或者自己知道多少就不寫
10: i = 0; v=[28439]12: t = 9
; 13: j = 4
15: v = [284
33]13: j = 3
15: v = [284
43] 13: j = 2
15: v = [288
43]13: j = 1
15: v = [228
43]13: j = 0
17: v = [928
43]
這個下面就不用再執行下去了,可以發現這個for(j..就是再向右轉乙個數,這樣i = 1 i = 2以後,v應該是[4 3 9 2 8]
其實演算法程式就像數學應用題先找到乙個公式或者乙個代數方程組,然後把引數帶進去一步一步算,得到結果,反之,這個手演算
的過程也可以啟發編演算法和找到更好的演算法,有些是心裡面心算或者叫運籌和手算也可以叫沙盤推演結合的
常見程式演算(二)
快速排序法 quick sort 是目前所公認最快的排序方法之一 視解題的物件而定 雖然快速排序法在最差狀況下可以達o n2 但是在多數的情況下,快速排序法的效率表現是相當不錯的。快速排序法的基本精神是在數列中找出適當的軸心,然後將數列一分為二,分別對左邊與右邊數列進行排序,而影響快速排序法效率的正...
快速演演算法
package paul title 快速演演算法 description 快速排序法的基本精神是在?盜兄姓頁鯗m?的?s心,然後?盜幸環?槎?分?e?筮?c右?盜羞m行排序,而影?快速排序法效率的正是?s心的?x?瘛?下面介紹了三種方法,從理論分析效率遞增,但是沒有用大陣列來進行測試 author...
Bresenham直線演演算法
法,它會算出一條線段在 n 維光柵上最接近的點。這個演演算法只會用到較為快速的整數加法 減法和位元移位,常用於繪製電腦畫面中的直線。是計算機圖形學中最先發展出來的演演算法。經過少量的延伸之後,原本用來畫直線的演演算法也可用來畫圓。且同樣可用較簡單的算術運算來完成,避免了計算二次方程式或三角函式,或遞...