categories: python
tags: 算法
copyright: true
ittle: 排序算法
排序算法
- 冒泡排序
原理: 相邻两个元素之间相互对比, 如果第一个元素大于第二个元素, 则交换位置
效果: 最大的元素不断的往后冒泡
特点: 稳定 / 最坏时间复杂度为 O(n2)
def bubble(alist):
# 获取数列长度
n = len(alist)
for j in range(0, n-1):
# 引入计数变量, 用于记录元素的交换次数
count = 0
# 如果count大于零, 则代表位置被交换过,排序过的列表是正序的,所以直接跳出循环
if count > 0:
break
else:
# 内层循环用于比较相邻元素的大小, n-1-j:表示每次循环的最大长度都向前挪一位(每一次循环都会产生一个最大值)
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
# 返回排序后的列表
return alist
alist = [1,2,3,4,5,6]
l = bubble(alist)
print(l) # [1, 2, 3, 4, 5, 6]