代码的效率

时间:2013-08-03 05:58:41

标签: c++ algorithm big-o

如何在找到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;
}

1 个答案:

答案 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等。