python冒泡排序
1、什么是冒泡排序
Bubble Sort 是最简单和通用的排序方法,基本思想是:在待排序的一组数据中,将相邻的两个数进行比较,若前面的数比后面的数大,就交换两个数,否则不交换;如此下去,直至完成最终排序。由此可得,在排序的过程中,大的数据往下沉,小的数据往上浮,就像气泡一样。于是将这种算法形象地称为冒泡排序
2、排序过程剖析
假设有n个数,对相邻的数比较需要进行n-1轮的排序。以Data1 = [3,7,6,5,9,2,8]为例
第1轮 比较n-1次即7-1=6次
3、7不换位 [3,7,6,5,9,2,8]
6、7换位 [3,6,7,5,9,2,8]
7、5换位 [3,6,5,7,9,2,8]
7、9不换位 [3,6,5,7,9,2,8]
9、2换位 [3,6,5,7,2,9,8]
9、8换位 [3,6,5,7,2,8,9]
至此,最大的数9已经换到最后一位,下一轮排序无需再比较最后1个数
第2轮 比较n-2次即7-2=5次
3、6不换位 [3,6,5,7,2,8,9]
6、5换位 [3,5,6,7,2,8,9]
6、7不换位 [3,5,6,7,2,8,9]
7、2换位 [3,5,6,2,7,8,9]
7、8不换位 [3,5,6,2,7,8,9]
至此,第二大的数8已经换到倒数第二位,下一轮排序无需再比较最后2个数
第3轮 比较n-3次即7-3=4次
3、5不换位 [3,5,6,2,7,8,9]
5、6不换位 [3,5,6,2,7,8,9]
6、2换位 [3,5,2,6,7,8,9]
6、7不换位 [3,5,2,6,7,8,9]
至此,第三大的数7已经换到倒数第三位,下一轮排序无需再比较最后3个数
第4轮 比较n-4次即7-4=3次
3、5不换位 [3,5,2,6,7,8,9]
5、2换位 [3,2,5,6,7,8,9]
5、6不换位 [3,2,5,6,7,8,9]
至此,第四大的数6已经换到倒数第四位,下一轮排序无需再比较最后4个数
第5轮 比较n-5次即7-5=2次
3、2换位 [2,3,5,6,7,8,9]
3、5不换位 [2,3,5,6,7,8,9]
至此,第五大的数5已经换到倒数第五位,下一轮排序无需再比较最后5个数
第6轮 比较1次
2、3不换位 [2,3,5,6,7,8,9]
至此,排序完毕
(第i轮 比较n-i次即7-i次)
3、用python实现冒泡排序
def Bubble_Sort(num):
'''
:param num: 需要排序的数组
:return: 排序结果
'''
n = len(num)
for i in range(n-1):
for j in range(n-1-i):
if num[j]>num[j+1]:
num[j],num[j+1] = num[j+1],num[j]
print("第{}次比较".format(j+1),num)
print("-------------第{}轮排序----------".format(i+1), num)
return num