def select(alisst):
"""选择排序"""
for i in range(len(alisst) - 1): # 循环次数
min_index = i # 将第一个默认为最小的
for j in range(i + 1, len(alisst)): # 从i后一个进行循环和i进行比较
if alisst[j] < alisst[i]: # 循环出来的j 小于i
min_index = j # 将j作为最小值
if min_index != i: # i不是最小值
alisst[i], alisst[min_index] = alisst[min_index], alisst[i] # 循环出来的i和定义出来的最小值调换
# 最优时间复杂度为:O(n^2)
# 最坏时间复杂度为:O(n^2)
# 稳定性:不稳定(有相同最大元素会改变原有顺序)
li = [12, 45, 86, 52, 49, 32]
select(li)
print(li)
结果:
def bubbling(alist):
"""冒泡"""
for j in range(len(alist) - 1): # 遍历需要比较的数到倒数第二个就行即len(alist)-1
count = 0
for i in range(len(alist)-1 - j): # 遍历需要比较的数 范围:减去j循环过的
if alist[i] > alist[i + 1]: # 这个和下一个进行比较
alist[i], alist[i + 1] = alist[i + 1], alist[i] # 互换位置
count += 1
if 0 == count:
break
# 最优时间复杂度为O(n)
# 最坏时间复杂度为O(n^2)
# 稳定性:稳定,不改变原有的顺序
li = [77, 52, 54, 5, 89, 64, 699]
bubbling(li)
print(li)
结果:
# li = [77, 52, 54, 5, 89, 64, 699]
# li2 = []
# while len(li):
# li2.append(min(li))
# li.remove(min(li))
# print(li2)
结果: