未經許可,不的轉載
版權歸屬高雷個人
聯絡方式:
email:gaolei57521@gamil.com
QQ: 38929568
本系列BLOG僅在以下3個地址釋出
http://kome2000.blog.51cto.com/
http://38929568.qzone.qq.com/
http://blog.csdn.net/kome2000
關於迴圈遍歷
1.for迴圈
常見方式
- int i;
- for( i=0; i<N; i++ )
- {
- //進行操作的程式碼 略
- }
通常用於迴圈步進的變數為i,j,k,m,n…等但字母變數。從效率和可讀性考慮,迴圈的層次最好要低於3層。
對於迴圈結束條件,首選小於,如果需要<=N或者>0等其他條件來做迴圈結束條件,需要增加註釋說明當時為何要這麼做!
1.1 2層迴圈也比較常見,比如遍歷一個二維陣列
- int array[row][col]; //row為行數常量,col為列數常量
- int i,j;
- for( i=0; i<row; i++ )
- {
- for( j=0; j<col; j++ )
- {
- //陣列訪問形式array[i][j],
- //進行操作的程式碼 略
- }
- }
內層迴圈一定要是陣列的第一維,因為我們知道陣列是連續的記憶體空間,任何維數的陣列都可以改寫成1維陣列,
陣列的第一維一定是連續的記憶體地址,所以計算機在訪問連續的地址時速度快,
另外先處理陣列的第一維也是比較直觀,更能夠讓閱讀程式碼的人理解的方式。
1.2 如果第一維數比較少,比如1000個座標的陣列
可以定義成
int pos[1000][2];//其中第一維僅有2個值,下標為0的時候表示X座標,小標為1時表示Y座標
這樣的陣列可以用1層迴圈來遍歷,這樣可以減少CPU跨切迴圈層次的次數。
例如
- for( i=0; i<1000; i++ )
- {
- //pos[i][0];
- //pos[i][1];//分別對下標0.1...進行處理
- //進行操作的程式碼 略
- }