Python实现冒泡排序
简单说下,冒泡排序思路就是先从无排序的第一个元素依次与后面的元素做比较,获取比较中大的一方,小的一方放到前一位置,然后进行下次比较,最后找到本轮最大的一个后,将剩下的再进行一轮排序。
代码实现上可能各有不同,但是思路都是一样。
贴出我的实现,不是很简洁,debug了一段时间
lt = [1, 100, 2, 23, 23, 6, 41, 24, 24, 85, 56]
sorted_list = list()
for i in range(len(lt)): # 冒泡比较遍历次数
temp_max = None
for idx, v in enumerate(lt):
if not temp_max: # 将第一个取值作为临时最大值
temp_max = v
if temp_max <= v:
if idx == 0:
continue
else:
lt[idx-1], temp_max = temp_max, v
else:
lt[idx-1] = v
lt.pop() # 取出最后一个元素,剩余的元素开始新一轮排序
sorted_list.append(temp_max)
print(sorted_list)
运行结果
[100, 85, 56, 41, 24, 24, 23, 23, 6, 2, 1]
网络上的实现方法就很简洁,不需要额外的列表,在源列表中交换
1 #假设变量已经全部定义好
2 for i in range(len-1):
3 for j in range(len-1-i):
4 if a[j] > a[j+1]:
5 a[j], a[j+1] = a[j+1], a[j]
测试[1]
测试脚注,看来博客园支持markdown脚注! ↩︎