给定代码的时间复杂度
将 a[i,j]
与 a[j,i]
交换,得到 j > 的这段代码的时间复杂度是多少? i
(转置给定矩阵):
for(i=1;i<=(n-1);i++)
{
for(j=(i+1);j<=n;j++)
{
T=a[i,j];
a[i,j]=a[j,i];
a[j,i]=T;
}
}
What is the time complexity of this code which swap a[i,j]
with a[j,i]
for j > i
(transpose the given matrix):
for(i=1;i<=(n-1);i++)
{
for(j=(i+1);j<=n;j++)
{
T=a[i,j];
a[i,j]=a[j,i];
a[j,i]=T;
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
内部循环将工作从 n 减少到 1,实际完成的工作(交换数字)是 O(1),因此:
n 次操作 + (n - 1) 次操作 + (n - 2) 次操作 + ... + 2 次运算 + 1 次运算 = sum(1, n) 运算 = (n * (n + 1)) / 2 = (n2 + n) / 2 = O(n2)
The inner loop does decreasing work from n to 1, and the actual work being done (swapping numbers) is O(1), so:
n operations + (n - 1) operations + (n - 2) operations + ... + 2 operations + 1 operation = sum(1, n) operations = (n * (n + 1)) / 2 = (n2 + n) / 2 = O(n2)
时间复杂度为O(n^2)。
The time complexity is O(n^2).