基本排序算法02----冒泡排序(bubble sort)

过程:

1.从列表的开头处开始,比较前两项数据

2.若这两项数据的顺序不正确(假定要求按升序排列),则调换位置

3.接下来比较第二、三项数据,重复操作,以此类推

4.当进行到最后两项数据时,列表中最大的数据就已经交换到最后一项,此时第一轮运行结束,第n项数据排序完成

5.从列表的开头至第n-1项,进行第2轮排序,第2轮结束后第n-1项至第n项的排序就完成了

6.以此类推,直到排序结束


以下是函数代码

def bubbleSort(lyst):
    n = len(lyst)
    while n > 1:                       
        i = 1                          # Start each bubble
        while i < n:
            if lyst[i] < lyst[i - 1]:  # Exchange if needed
                swap(lyst, i, i - 1)
            i += 1
        n -= 1


#与上篇文章相同,我们定义了一个用于交换位置的代码
def swap(lyst, i, j):    
    temp = lyst[i]  
    lyst[i] = lyst[j]  
    lyst[j] = temp

最先完成排序的是列表的末尾,为了演示这一点,我们在每轮排序结束之后打印出 该轮所操作列表的末项

def bubbleSort(lyst):
    n = len(lyst)
    while n > 1:                       
        i = 1                          # Start each bubble
        while i < n:
            if lyst[i] < lyst[i - 1]:  # Exchange if needed
                swap(lyst, i, i - 1)
            i += 1
        print(lyst[n-1])
        n -= 1



def swap(lyst, i, j):    
    temp = lyst[i]  
    lyst[i] = lyst[j]  
    lyst[j] = temp


#定义一个无序列表list1
list1 = [33,5,7,19]

#运行
bubbleSort(list1)

运行结果如下

33
19
7
>>> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值