用c语言写一个大规模矩阵遍历的程序,在不同规模的数据下运行,比较按行遍历快还是按列遍历快。
本题老师的考察点:矩阵在计算机内存储的方式
解答本题时遇到的一些问题:
- 在考虑矩阵时,考虑了数组,又想到了线性代数,刚开始还在纠结行列是不是要一致。
- 直接从codeblocks粘贴代码过来简直太丑了,于是想到了我好久不用的csdn账号,顺便再发个原创博客。
#include <stdio.h>
#include <stdlib.h>
#include<time.h>
int main()
{
const int MAX_ROW = 2048;
const int MAX_COL = 2048;
int (*a)[MAX_COL]=(int(*)[MAX_COL])malloc(sizeof(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();
printf("The first travel time is %lf ms\n",(double)finish-start);
//先列后行
start = clock();
for (int i = 0; i<MAX_COL; i++)
for (int j = 0; j<MAX_ROW; j++)
a[j][i] = 1;
finish = clock();
printf("The second travel time is %lf ms\n",(double)finish-start);
return 0;
}