一. 冒泡排序(BubbleSort)

一. 冒泡排序(BubbleSort)

https://segmentfault.com/a/1190000014598420

https://www.runoob.com/w3cnote/bubble-sort.html

基本思想:两个数比较大小,较大的数下沉,较小的数冒起来。

过程:
比较相邻的两个数据,如果第二个数小,就交换位置。
从后向前两两比较,一直到比较最前两个数据。最终最小数被交换到起始的位置,这样第一个最小数的位置就排好了。
继续重复上述过程,依次将第2.3…n-1个最小数排好位置。

冒泡是不断比较调整位置把最小的换到前面;有点像小时候班级排队伍一样,一点点调整,只要你比你前面小,就跟他换,知道你比前面的高。

平均时间复杂度:O(n2)

在这里插入图片描述

在这里插入图片描述

def bubbleSort(arr):
    n = len(arr)
 
    # 遍历所有数组元素
    for i in range(n):
 
        # Last i elements are already in place
        for j in range(0, n-i-1):
 
            if arr[j] > arr[j+1] :
                arr[j], arr[j+1] = arr[j+1], arr[j]
    return arr
arr = [64, 34, 25, 12, 22, 11, 90]
 
print(bubbleSort(arr))

类似冒泡排序

def bubble_sort(lists):
    # 冒泡排序
    count = len(lists)
    for i in range(0, count):
        for j in range(i + 1, count):
            if lists[i] > lists[j]:
                # 交换位置
                lists[i], lists[j] = lists[j], lists[i]

    return lists

A=[7,3,5,2,6]
print(bubble_sort(A))

在这里插入图片描述

标红的循环是,找出最小值,放在第一位。

当i=0时,则j=[1,2,3,4]
进入j的循环:
lists[i]=7, lists[j]=3
交换位置
lists[i]=3, lists[j]=7
[7,3,5,2,6] => [3,7,5,2,6]

i=0,j=2
lists[i]=3, lists[j]=5
不符合IF条件:
[3,7,5,2,6] => [3,7,5,2,6]

i=0,j=3
lists[i]=3, lists[j]=2
交换位置
[3,7,5,2,6] => [2,7,5,3,6]

i=0,j=4
lists[i]=2, lists[j]=6
不符合IF条件:
[2,7,5,3,6] => [2,7,5,3,6]
到此第一个循环结束,把2排在第一位

跳出循环,进入外层循环
i=1,j=[2,3,4]

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值