关于算法的时间复杂度,在大话数据结构里面有两个例子
int sum = 0, n = 100; /* 执行 1 次 */
sum = (1 + n) * n / 2; /* 执行第 1 次 */
sum = (1 + n) * n / 2; /* 执行第 2 次 */
sum = (1 + n) * n / 2; /* 执行第 3 次 */
sum = (1 + n) * n / 2; /* 执行第 4 次 */
sum = (1 + n) * n / 2; /* 执行第 5 次 */
sum = (1 + n) * n / 2; /* 执行第 6 次 */
sum = (1 + n) * n / 2; /* 执行第 7 次 */
sum = (1 + n) * n / 2; /* 执行第 8 次 */
sum = (1 + n) * n / 2; /* 执行第 9 次 */
printf("%d", sum); /* 执行 1 次 */
这段代码的时间复杂度是 O(1)
而上面的这段代码还可以这样表示
int n = 10;
for(int i=0; i<n; i++)
{
sum = (1 + 100) * 100 / 2;
}
这样修改之后代码的时间复杂度是多少? O(1)还是 O(n)?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.