冒泡法python实现
文章目录#!/usr/bin/env python# -*- coding:utf8 -*-def bubble_sort(alist):# 结算列表的长度n = len(alist)# 外层循环控制从头走到尾的次数for j in range(n - 1):# 用一个count记录一共交换的次数,可以排除已经是排好的序列...
·
文章目录
#!/usr/bin/env python
# -*- coding:utf8 -*-
def bubble_sort(alist):
# 结算列表的长度
n = len(alist)
# 外层循环控制从头走到尾的次数
for j in range(n - 1):
# 用一个count记录一共交换的次数,可以排除已经是排好的序列
count = 0
# 内层循环控制走一次的过程
for i in range(0, n - 1 - j):
# 如果前一个元素大于后一个元素,则交换两个元素(升序)
if alist[i] > alist[i + 1]:
# 交换元素
alist[i], alist[i + 1] = alist[i + 1], alist[i]
# 记录交换的次数
count += 1
# count == 0 代表没有交换,序列已经有序
if 0 == count:
break
if __name__ == '__main__':
alist = [54, 26, 93, 77, 44, 31, 44, 55, 20]
print("原列表为:%s" % alist)
bubble_sort(alist)
print("新列表为:%s" % alist)
内层循环需要注意理解的:
# 冒泡排序要排序n个数,由于每遍历一趟只排好一个数字,
# 则需要遍历n-1趟,才能将n个数字排好;所以最外层循环是要循环n-1次
# #每次排序一个数字的时候,假设它前面已经有i个数字已经排好了,由于将n个数字
# 排好需要n-1次,此时已经排好i个数字了,排下一个数字需要遍历n-1-i次
#
# 排第一个数,n-1次
# 排第2个数,n-2次
# ...
# 排第i个数,n-i次
更多推荐
所有评论(0)