在算法導論的第一節課上,老師給我們展示了下面兩段代碼。突然想到很久之前看的一篇文章裏提出的一個問題,是否有這樣一段代碼,能讓你感動。看到這段代碼後,起碼這三年裏,我找到了能讓我感動的代碼。
代碼是兩個函數的對比
//參數 二維數組,數組的行數m,數組的列數n
void method1(int[][] array,int m,int n){
for(int row=0;row<m;row++){
for(int column=0;column<n;column++){
System.out.println(array[row][column]);
}
}
}
void method2(int[][] array,int m,int n){
for(int column=0;column<n;column++){
for(int row=0;row<m;row++){
System.out.println(array[row][column]);
}
}
}
接着老師問了一個問題:這兩個方法直接有什麼區別?
同樣的方法,僅僅是改動了兩個參數,在數據量大的時候,執行效率相差百倍以上。簡簡單單的兩個遍歷二維數組的函數,相差百倍的運算速度裏面透露的,卻是cpu緩存的設計。