通常来说,计算最好情况和最坏情况的时间复杂度很容易,但是当涉及到平均情况,特别是给定概率p时,我不知道从哪里开始。让我们看一下以下算法来计算矩阵中所有元素的乘积:
假设p是
int computeProduct(int[][] A, int m, int n) {
int product = 1;
for (int i = 0; i < m; i++ {
for (int j = 0; j < n; j++) {
if (A[i][j] == 0) return 0;
product = product * A[i][j];
}
}
return product;
}
假设p是
A[i][j]
为0的概率(即算法在此处终止,返回0); 我们如何推导出该算法的平均情况时间复杂度?