- 冒泡排序
lis = [3, 4, 1, 5, 2]
for i in range(len(lis)-1):
for j in range(len(lis)-1-i):
if lis[j] > lis[j+1]:
temp = lis[j]
lis[j] = lis[j+1]
lis[j+1] = temp
print(lis)
- 选择排序
lis = [3, 4, 1, 5, 2] # 试验用数组
for i in range(len(lis)): # 考虑最坏的情况,可能要比较等同于列表长度的次数
k = i # k有两个作用,一个是先保存好i的值,因为最外层循环每一次都得用i做比较,而后续的则是用k保存最小值标号
# 另外可能会考虑到后续的比较过程中lis[i]是最小的情况,那么后续的交换貌似是浪费时间,一个原因是为了统一
# 代码,其次这样的交换并不会耗费多长时间
for j in range(i+1, len(lis)): # 列表中比较大小的方法,找到比lis[k]小的值就刷新一次k的值
if lis[j] < lis[k]:
k = j
temp = lis[k] # 选择交换步骤,将与lis[i]相比过程中得到的最小值与lis[i]交换
lis[k] = lis[i]
lis[i] = temp
print(lis)
- 插入排序
lis = [3, 4, 1, 5, 2]
for i in range(1, len(lis)):
temp = lis[i] # 保存此时要比较的值
j = i # 保存开头的标号
while j > 0 and temp < lis[j-1]: # 只要保存的temp一直小于前面的值,就循环“让队”,直到找到正确位置
lis[j] = lis[j-1]
j = j-1
lis[j] = temp # 在通过while循环找到的正确位置插入temp
print(lis)