二维数组更快的遍历方式


代码常数怎么才能小一点呢~


先安利一下 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。。。)

所以在卡常数中可以应用! 然后就酱




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值