冒泡排序的是实现

python实现冒泡排序

一、冒泡排序简介

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

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

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

二、冒泡排序的原理

1. 比较相邻的两个元素。如果第一个元素大于第二个元素则交换他们的位置(升序如此,降序相反)。

2. 从列表的开始一直到结尾,依次对每一对相邻元素都进行比较。这样,值最大的元素就通过交换“冒泡”到了列表的结尾,完成第一轮“冒泡”。

3. 重复上一步,继续从列表开头依次对相邻元素进行比较。已经“冒泡”出来的元素不用比较(一直比较到结尾也可以,已经“冒泡”到后面的元素即使比较也不需要交换,不比较可以减少步骤)。

4. 继续从列表开始进行比较,每轮比较会有一个元素“冒泡”成功。每轮需要比较的元素个数会递减,一直到只剩一个元素没有“冒泡”时(没有任何一对元素需要比较),则列表排序完成。

以次列表为例[7,5,3,6]
#冒泡排序,对列表进行升序排序
[7,5,3,6]  #原始列表
[5,7,3,6]  #第一轮第一次  比较7和5的大小,7>5 交换位置
[5,3,7,6]  #第二次  比较7和3的大小,7>3 交换位置
[5,3,6,7]  #第三次  比较7和6的大小,7>6 交换位置,第一轮冒泡排序完毕(将最大值放在了列表的最后一个元素)
[3,5,6,7]  第二轮第一次  比较5和3的大小,5>3交换位置  

三、代码实现

def bubble_sort(alist):
    #相邻两个元素进行比较,如果发现位置错误,则进行交换
    n=len(alist)
    for k in range(n-1):
        count=0
        for i in range(0,n-1-k):
            if alist[i]>alist[i+1]:
                alist[i],alist[i+1]=alist[i+1],alist[i]
                count+=1
        #判断count的值是否等于0,如果等于0说明没有交换
        if count==0:
            break
alist=[7,5,3,6,44,22,99,11]
bubble_sort(alist)
print("排序后的数组为:")
print(alist)

结果展示

排序后的数组为:
[3, 5, 6, 7, 11, 22, 44, 99]

四、冒泡排序的时间复杂度及其稳定性
1.最优时间复杂度:O(n) (表示遍历一次发现没任何可以交换的元素,排序结束)
2.最坏时间复杂度:O(n^2)
3.稳定性 :稳定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值