栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

基本算法——冒泡排序——python实现

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基本算法——冒泡排序——python实现

基本概念

冒泡排序(Bubble Sort)是一种常见的排序算法,相对来说比较简单。

冒泡排序重复地走访需要排序的元素列表,依次比较两个相邻的元素大小,如果顺序(从小到大)错误就交换它们的位置{说白了就是两两交换,大的放后面}。重复地进行直到没有相邻的元素需要交换,则元素列表排序完成。

在冒泡排序中,值最大(或最小)的元素会通过交换慢慢“浮”到元素列表的“顶端”。就像汽水“冒泡”一样,所以称为冒泡排序。


代码实现
def mao_pao(li):
    for i in range(0,len(li)-1):#第几躺
        for j in range(0,len(li)-i-1):#最高到索引哪里
            if li[j] > li[j+1]:
                li[j],li[j+1] = li[j+1],li[j]
    return li

li=[2,4,3,1,4,5,7,6,9]
mao_pao(li)
print(li)
                

补充:

我想到一种可能:如果它后面排好了,就不用排,直接退出循环,我们可以定一个检测参数

没有加检测前:

 加检测后:

明显看到步骤减少

总结:

1. 时间复杂度

在没有特殊说明时,一般都是计算最坏时间复杂度。

在冒泡排序中,最坏的情况是元素列表的初始状态是完全逆序排列的,需要进行 n-1 轮“冒泡”,每一轮“冒泡”需要进行 n-i 次比较和交换操作。i 的平均值为 n/2 ,时间复杂度为 T(n)=n(n-1)/2 ,再乘每次操作的步骤数(常数,不影响大O记法),所以冒泡排序的时间复杂度为 O(n^2) 。

2. 稳定性

排序算法的稳定性指,当元素列表中有相等的元素时,相等元素的相对次序是否固定不变,如果相对次序固定不变,则排序算法是稳定的,反之。

在冒泡排序中,每次比较两个元素,当元素的大小顺序错误时才会进行交换,如果元素列表中有两个相等的元素,它们最终肯定会相邻在一起,但对它们比较时不会进行交换,相对次序是保持不变的。所以冒泡排序是一种稳定的排序算法。
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/571362.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号