python:排序算法——冒泡排序
1、什么是冒泡排序
所谓冒泡排序就是:将一个数列中的数字两两之间进行比较,如果第一个元素大于或小于第二个元素,那么就将两个元素位置交换,然后这个小或大值再往下两两比较,使最大或最小值慢慢浮到数列的最顶端,这样的排序算法我们称之为冒泡排序。
2、工作原理
(1)首先要获取一个数列,或者说一个容器,那么len(容器) >= 2,否则我想排序就没有意义
(2)你要对一个数列中的数字元素进行排序,然后两两之间要进行比较。因为是两两之间进行比较,那么最后比较的次数就应当为 len(list) -1 次,那么这个外循环的作用就是设置比较的次数
(3)接下来必须要有一个内循环,那么这个内循环就是操控元素之间比较的(通过索引取值比较),并且内循环比较完就要拿到一个极端值(即最大最小值),拿到以后我们就不能动这个元素了,接下来只比较剩下的元素,那么内循环的次数就应为 len(list) -1 - i(外循环的值)。
(4)通过内循环,我们可以拿到每一次的索引,并且拿到每一次的索引,我们要与下一个索引的值作比较,并且根据降序或者升序(即大于等于号)做出判断。
(5)当判断结果成立,那么我们就要将相邻的两个元素做交换,最终使得每次的极端值浮出水面
(6)最终我们不必返回该列表,因为我们已经交换了位置,也就是已经排好了序
3、示例(升序排列)
def sort(list):
# 当列表的长度大于2排序才有意义
if len(list) > 2:
# 外循环的次数为列表中元素两两比较的次数
for time in range(len(list) - 1):
# 由于每次比较完都会将最大元素放置到最后,那么排好序的元素就不能动,只能动前边没有排好的
# 索引每次必须减去外循环遍历的值
for index in range(len(list) - 1 - time):
# 当第一个元素大于它后边的元素
if list[index] > list[index + 1]:
# 那么就交换位置
list[index], list[index + 1] = list[index + 1], list[index]
else:
print("列表中元素长度不足以排序")
if __name__ == '__main__':
mylist = [34, 565, 21332, 8979, 2344, 8989, 1]
sort(mylist)
print(mylist)
运行结果:
[1, 34, 565, 2344, 8979, 8989, 21332]
Process finished with exit code 0