冒泡排序(Python实现)

冒泡排序

针对连续的两个元素进行两两比较,如果前者大于后者就交换
(1)第一轮比较:从第一个元素开始,按顺序对列表中所有N个元素中连续的两个元素进行两两比较,如果两者不满足升序关系则交换。第一轮比较过后,最大数将下沉到列表最后
(2)第二轮比较:从第一个元素开始,对列表中前N-1个元素进行两两比较,使次大数下沉到最后
(3)以此类推,N-1轮后,排序完毕

代码实现

a = [77, 42, 35, 12, 101, 5]


# # 首轮要比较N-1次
# for i in range(len(a) - 1):
#     flag = True
#     for j in range(len(a) - 1 - i):
#         if a[j] > a[j + 1]:
#             a[j], a[j + 1] = a[j + 1], a[j]
#             flag = False
#     if flag == True:
#         break
# print(a)


def bubble_sort(arr):
    for i in range(len(arr) - 1):
        for j in range(len(arr) - 1 - i):
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]
    return arr


b = bubble_sort(a)
print(b)

冒泡排序的时间复杂度为O(n2),最坏情况为O(n2),最好情况为O(n)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值