原理
冒泡算法原理是十大排序算法之一,比较常见。其原理是重复地走访要排序的数列,一次比较相邻两个元素,如果元素位置错误,则交换位置,直到没有数据需要交换为止。
冒泡排序中,最大的元素在每一次排序后都会跑到数列右端,就像开水中的水泡往上冒一样,最大的泡先冒出来。
冒泡排序也叫下沉排序,此时是将小的元素往右移,即每趟排序都将数组内的最小元素移到数组最左端。
步骤
遍历数组,比较相邻两个元素,如果第一个大于第二个,则交换位置;
对每一对相邻的元素做同样的动作,从开始第一对到最后一对,完成后,最大的元素将跑到数组的最右端,完成第一趟排序;
对所有元素重复上面的步骤,除了最后一个;
重复上面的步骤,每次排序的元素将越来越少,直到没有元素需要比较为止。
图解
实现
冒泡排序使用Python实现如下:
def bubble_sort(array):
length = len(array)
for index in range(length):
for i in range(1, length-index):
if array[i-1] > array[i]:
array[i-1], array[i] = array[i], array[i - 1]
return array
l = [16, 5, 8, 15, 7, 9, 19, 18, 3, 6, 49]
print(bubble_sort(l))复制
对于上面的代码,如果要排序的数组本身是有序的,也会老老实实的跑完n趟(n为数组中元素个数),但是这种情况下,是不必要的,因此可加一个标志,如果已经是有序的,即没有元素交换,则结束排序过程:
def bubble_sort(array):
length = len(array)
for index in range(length):
flag = True
for i in range(1, length-index):
if array[i-1] > array[i]:
array[i-1], array[i] = array[i], array[i - 1]
flag = False
if flag:
return array
return array
l = [16, 5, 8, 15, 7, 9, 19, 18, 3, 6, 49]
print(bubble_sort(l))复制
文章转载自写程序的猫,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
python中标识符的命名规则和命名规范
周同学带您玩AI
104次阅读
2025-04-21 10:34:44
解决pyqt5 textbrowser控件超链接锚点问题
zayki
42次阅读
2025-04-27 16:58:59
python 实现消费者优先级队列
天翼云开发者社区
33次阅读
2025-04-25 11:08:21
优雅遍历和删除特定开头的key
陌殇流苏
29次阅读
2025-04-25 12:17:03
[MYSQL] binlog校验
大大刺猬
26次阅读
2025-05-13 15:45:23
《深入剖析Python的生成器表达式与列表推导式:探寻代码背后的哲学与艺术》
程序员阿伟
26次阅读
2025-04-27 16:22:14
python中的常见数据类型
周同学带您玩AI
16次阅读
2025-04-21 10:34:43
python自动更新dns A记录
godba
13次阅读
2025-04-23 11:19:04
Python数据类型详解:列表 — 从基础到AIOps与DevOps实战
韩公子的Linux大集市
10次阅读
2025-05-07 08:32:47
python中不同数据类型转换-布尔型
周同学带您玩AI
10次阅读
2025-04-22 10:12:05