冒泡排序算法的Python实现
冒泡排序算法的工作原理如下:
1.比较相邻元素。如果第一个大于第二个(按升序),则交换它们。
2。对每对相邻元素执行相同的操作,从开头的第一对到结尾的最后一对。这一步完成后,最后一个元素将是最大的数。
3。对除最后一个元素之外的所有元素重复上述步骤。
4。对越来越少的元素重复上述步骤,直到没有可比较的数字对为止。
示例图中的步骤如下:
![]()
冒泡序列代码实现:
#!/usr/bin/env python
# -*- coding:utf-8 -*-__author__ = "hsz"def bubble_sort(alist):
# 外层循环控制比较几轮
n = len(alist)
for j in range(n - 1):
# 内存循环控制交换# -j是不再换已经排好的for i in range(n - 1 - j):
# 若前一个比后一个大,则换if alist[i] > alist[i + 1]:
alist[i], alist[i + 1] = alist[i + 1], alist[i]
# print(li)if__name__ == '__main__':
li = [33, 11, 26, 78, 3, 9, 40]
print("原来的列表:", li)
bubble_sort(li)
print("排序后的列表:", li)优化冒泡算法实现:
#!/usr/bin/env python
# -*- coding:utf-8 -*-__author__ = "hsz"# 调优后的冒泡排序def bubble_sort(alist):
# 外层循环控制比较几轮
n = len(alist)
for j in range(n - 1):
# 定义计数器
count = 0
# 内存循环控制交换# -j是不再换已经排好的for i in range(n - 1 - j):
# 若前一个比后一个大,则换if alist[i] > alist[i + 1]:
alist[i], alist[i + 1] = alist[i + 1], alist[i]
# 计数器
count += 1
if count == 0:
returnif__name__ == '__main__':
li = [33, 11, 26, 78, 3, 9, 40]
print("原来的列表:", li)
bubble_sort(li)
print("排序后的列表:", li) 版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网