Python排序算法:冒泡排序

冒泡排序,由一头先出现最大值,逐渐向另一端扩展



什么是冒泡排序

冒泡排序(Bubble Sort)是一种简单的排序算法。它重复遍历要排序的数列,一次比较两个元素,按大小值顺序排序,直到没有需要交换,则该数列排序完成。越小的元素经过交换后会慢慢”浮”到数列顶端,故称“冒泡排序”。

冒泡排序的过程:
- 1、比较相邻元素,按升序规则交换两者顺序;
- 2、对每一对相邻元素做同样工作,从第一对到结尾的最后一对。结束后最后的元素会是最大的数;
- 3、针对所有元素重复上述步骤,除了最后一个。
- 4、再除去上一轮的最后一个最大元素,继续重复步骤,直到所有都比较完成;

代码实现

#冒泡排序

def bubble_sort(list):
    n = len(list)
    for i in range(n-1):
        count = 0              #记录一轮比较换位了多少次
        for j in range(0,n-1-i):
            if list[j] > list[j+1]:
                #list[j],list[j+1] = list[j+1],list[j]
                tmp = list[j]
                list[j] = list[j+1]
                list[j+1] = tmp
                count +=1
        if count == 0:       #比较了一轮没有一次换位操作,则排序完成
            break
    print(list)

b = [1,8,3,6,4,9,0,2]
a = bubble_sort(b)

>> [0, 1, 2, 3, 4, 6, 8, 9]

步骤解析

首先:定义函数 bubble_sort,输入参数 list

第二步:判断列表长度,列表有n个元素,就要遍历n-1次

第三步:开始第一次遍历,在末尾排出最大数,两两比较要比较n-1次

第四步:每一轮的遍历都使用 count 计数,如果count 计数为 0 ,则说明该次比较的所有数排列均为升序,则排序完成

n个数,遍历n-1次,每次结束末尾都排出了该次遍历的最大值
所以下次遍历的时候,末尾的数就不用参与比较了
所以第一轮比较,n个数需要比较n-1
第二轮比较,比较n-1-1
第三轮比较,比较n-1-2
第四轮比较,比较n-1-3
···

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值