-4

如何找到查找二维数组每行总和的效率(大 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;
}
4

1 回答 1

0

欢迎来到 SO!

我希望这个解释能澄清一点。

效率基本上可以定义为

“根据输入大小 n 的函数增长。”

大 O 表示法允许您根据算法如何响应(根据时间或空间要求)对输入大小的变化进行分类。

在您的情况下,您的输入是一个二维数组,它有许多行和许多列。您的for循环遍历每一行,嵌套循环遍历二维数组中每一行的每一列。H2CO3是对的,这个函数的大 O 是O(rows*columns)

其他不同效率的例子是:

O(n) - 线性 - 以与输入大小相同的速度增长;示例 - 在未排序的数组中查找项目

O(1) - 恒定 - 不增长 - 保持不变;示例 - 哈希表。

O(log n) - 对数;例子:二分查找

O(n log n) - 线性;示例:归并排序、快速排序等

有关更多信息,您应该始终使用 Google 搜索您的问题。

维基百科也有一个关于计算机科学的优秀文章列表,比如Big O Notation等等。

于 2013-08-03T06:56:08.857 回答