茶子

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

 

posted on 2024-08-27 13:04  茶子  阅读(6)  评论(0编辑  收藏  举报

导航