首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何分析给定的优化冒泡排序的复杂度?

如何分析给定的优化冒泡排序的复杂度?
EN

Stack Overflow用户
提问于 2013-05-09 22:27:38
回答 1查看 977关注 0票数 0

这是一个优化冒泡排序算法的伪代码。我试图分析它的时间复杂度,但我不确定第4行的成本是多少(如果Ai-1 > Ai)。答案是(n-1)+(n-2)+........+1吗?另外,第5行到第8行的成本是多少?

代码语言:javascript
运行
复制
1.for j = A.length to 2
2.    swapped = false
3.    for i = 2 to j
4.        if A[i-1] > A[i]
5.            temp = A[i]
6.            A[i-1] = A[i]
7.            A[i-1] = temp
8.            swapped = true
9.    if(!swapped)
10.       break
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-09 22:32:27

单次迭代的第5行到第8行的成本为O(1)。

第3-8行的循环开销为O(j-1)。

在最坏的情况下,整个排序的成本是O((n-1) + (n-2) + ... + 2) = O(n^2) (当然,在最好的情况下,当数组已经排序时,成本只有O(n-1))。

顺便说一下,优化冒泡排序的实现包含一个错误:第9行的if应该在外部循环内,但在内部循环之外。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16464173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档