冒泡算法

本文详细介绍了冒泡排序算法的工作原理及实现过程。通过逐步演示排序过程,解释了如何通过比较和交换相邻元素来对数组进行排序。此外还讨论了算法的时间复杂度。

核心思想:

传入一个数组,程序从前往后比较,如果第一个元素比第二个元素大,则交换位置,否则保持不变.第三个元素比第二个元素大,则和第二个元素交换位置,依此类推.算法复杂度为:n的2次方,n为元素个数.是效率较为低下的一种算法.冒泡算法每次只是相邻元素交换位置.


演示代码:(python)

#-*- coding:utf-8 -*-

#bubble sort
def bubble(t):
    count = len(t)
    if count == 0:
        return t
    for i in xrange(count - 1):
        for j in xrange(count - 1 -i):
            # 进行该循环的目的在于确定当前元素和后面元素比较的次数
            # 第一次比较四个
            # 第二次比较三个
            # ...
            if t[j] > t[j+1]:
                t[j], t[j+1] = t[j+1], t[j]
            
    return t

lists = [2,5,1,8]
print bubble(lists)

# -----------------------------------------------------------------------
# 第一趟排序,是从2开始依次和后面的5,1,8进行比较,根据大小或两两交换,或保持
# 不变,结果为[2, 1, 5, 8],这是5和1交换的结果
# 第二趟排序,是从2开始,依次和后面的5,1进行比较,8被排除在外,即这个泡已经冒
# 到了最顶端,无需参与比较了,结果为[1,2,5,8]
# 第三趟排序,是从1开始,和后面的2比较,5作为泡冒上去了,结果为[1,2,5,8]
# 至此排序结束
# -----------------------------------------------------------------------

转载于:https://www.cnblogs.com/itfenqing/archive/2012/07/10/4429476.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值