作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的代码 - 用于按 asc 顺序对列表元素进行排序的冒泡排序算法:
foo = [7, 0, 3, 4, -1]
cnt = 0
for i in foo:
for i in range(len(foo)-1):
if foo[cnt] > foo[cnt + 1]:
temp = foo[cnt]
c[cnt] = c[cnt + 1]
c[cnt + 1] = temp
cnt = cnt + 1
cnt = 0
我一直在修改我的代码,但对于在线法官来说,它仍然太低效了。一些帮助将不胜感激!
最佳答案
Early Exit BubbleSort
enumerate
count
a, b = b, a
。changed
背后的直觉。 i
个元素将被排序,因此您可以进一步减少与算法。foo = [7, 0, 3, 4, -1]
for i in range(len(foo)):
changed = False
for j, x in enumerate(foo[:-i-1]):
if x > foo[j + 1]:
foo[j], foo[j + 1] = foo[j + 1], foo[j]
changed = True
if not changed:
break
print(foo)
[-1, 0, 3, 4, 7]
请注意,这些优化都没有改变 BubbleSort 的渐近 (Big-O) 复杂性(仍然是 O(N ** 2)
),相反,只会减少相关的常数因子。
关于Python:如何使我的冒泡排序实现更省时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47987412/
我是一名优秀的程序员,十分优秀!