python 冒泡排序 选择排序 插入排序

冒泡排序图


# 冒泡排序,第一个往后比较,第一个小的话,第二个再往后比较,依次类推
#复杂度为n^2
def maopao(n):
    m = len(n)
    for i in range(m):  # 先从第一个开始取
        for j in range(i, m):  # 用第一个往后依次取出
            if n[i] > n[j]:  # 如果第一个大于第二个,交换,依次类推
                n[i], n[j] = n[j], n[i]
    return n


d = maopao([1, 4, 3, 6, 4, 8, 7, 9])
print(d)

 选择排序图

# 选择排序,从第一个开始依次往后比较,和第二个比较,第2个小,交换,交换后的第一个再次和第3个比较,依次类推
# 第一个一直和最后一个比较完,换第二个和第三 第四 ..最后一个比较依次类推
#复杂度为n^2
def choice(n):
    m = len(n)
    for i in range(m - 1):  # 先取第一个
        min_index = i  # 先让第一个作为最小的
        for j in range(i + 1, m):  # 从第二个取到最后一个
            if n[min_index] > n[j]:  # 如果第一个大于第二个
                min_index = j  # 将小的(第二个)变为第一个,依次类推,用第一个和第三个比较,第三个小的话就把第三个和第一个交换,依次类推
        if i != min_index:  # 如果i 和 最小的不一样,就交换i和最小的顺序
            n[min_index], n[i] = n[i], n[min_index]
    return n

p = choice([1, 4, 3, 6, 4, 8, 7, 9])
print(p)

 

插入排序图

# 插入排序:先让第一个作为虚拟的表,让第二个和第一个比,排好顺序,然后形成前两个作为一个整体顺序
# 让第三个和第二个比,第三个比第二个小,第三和第二交换,然后再和第一个比,前三个形成正确顺序
#然后第四个依次和前一个比较,依次类推
#复杂度 n^2
def insert(n):
    m = len(n)
    for i in range(m):#从第一个开始取,取到第2个时
        for j in range(i,0,-1): #取到第二个,让第二个往前比,取到第3个,让第三个和第二个和第一个分别比较
            if n[j]<n[j-1]:#如果第2个小于第一个,让第2个变成第一个,如果第3个小于第二个,交换,再和第一个比
                n[j],n[j-1]=n[j-1],n[j]
            else:
                break
    return n
p = insert([1, 4, 3, 6, 4, 8, 7, 9])
print(p)

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值