如何在找到2d数组的每一行的总和时找到效率(大O表示法)
void findTotal(int arr[3][],int rows,int cols)
{
int *total=new int[rows];
int sum;
for(int r=0;r<rows;r++)
{
sum=0;
for(int c=0;c<cols;c++)
sum=sum+arr[r][c];
total[r]=sum;
}
for(int k=0;k<rows;k++)
cout<<total[k]<<endl;
delete []total;
}
答案 0 :(得分:0)
欢迎来到SO!
我希望这个解释可以解决一些问题。
效率基本上可以定义为
“根据输入大小增加函数n。”
Big O表示法允许您根据输入大小的变化(根据时间或空间要求)对算法进行分类。
在您的情况下,您的输入是一个2D数组,它有许多行和多个列。您的for
循环遍历每一行,嵌套的循环遍历2D数组中每一行的每一列。 H2CO3 是对的,此函数的Big O为O(rows*columns)
不同效率的其他例子是:
O(n) - 线性 - 以与输入大小相同的速度增长;示例 - 在未排序的数组中查找项目
O(1) - 常数 - 不增长 - 保持不变;示例 - 哈希表。
O(log n) - 对数;例如:二进制搜索
O(n log n) - 线性;例如:合并排序,快速排序等
如需了解更多信息,请随时向Google提问。
维基百科也有一系列关于计算机科学的精彩文章,如Big O Notation等。