代码常数怎么才能小一点呢~
先安利一下 BulaBulaCHN的整洁即是正义 怀念他教我卡常的日子 泪
之后啊 我就来说一个小东西 还是转的。。。来自二维数组不同遍历方法效率比较
二维数组的遍历方式哪种更快呢?(先行后列,先列后行)
先行后列
其实可以脑洞YY一下
然后先给出一下代码 其实看了代码就不用我说了 汗。
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;
int main()
{
const int MAX_ROW=2000;
const int MAX_COL=2000;
int (*a)[MAX_COL]=new int[MAX_ROW][MAX_COL];
clock_t start,finish;
//先行后列
start=clock();
for(int i=0;i<MAX_ROW;i++)
for(int j=0;j<MAX_COL;j++)
a[i][j]=1;
finish=clock();
//totaltime=(double)()/CLOCKS_PER_SEC;
cout<<"先行后列遍历时间为:"<<finish-start<<"ms"<<endl;
//先列后行
start=clock();
for(int i=0;i<MAX_COL;i++)
for(int j=0;j<MAX_ROW;j++)
a[j][i]=1;
finish=clock();
//totaltime=(double)()/CLOCKS_PER_SEC;
cout<<"先列后行遍历时间为:"<<finish-start<<"ms"<<endl;
return 0;
}
先行后列 16ms
先列后行 63ms
效率差别明显
具体就像原文说的 先列后行的遍历会发生更多的页面交换 所以会慢
那么所以我们可以认为(到重点啦)
若二维数组a[x][y]按先行后列的顺序遍历
令x<y更优!!! (这时你大抵会想博主是不是sharbee。。。)
所以在卡常数中可以应用! 然后就酱