python数据结构——选择排序、冒泡排序代码实现详细过程

def select(alisst):
"""选择排序"""
for i in range(len(alisst) - 1):  # 循环次数
    min_index = i  # 将第一个默认为最小的
    for j in range(i + 1, len(alisst)):  # 从i后一个进行循环和i进行比较
        if alisst[j] < alisst[i]:  # 循环出来的j 小于i
            min_index = j  # 将j作为最小值
    if min_index != i:  # i不是最小值
        alisst[i], alisst[min_index] = alisst[min_index], alisst[i]  # 循环出来的i和定义出来的最小值调换
# 最优时间复杂度为:O(n^2)
# 最坏时间复杂度为:O(n^2)
# 稳定性:不稳定(有相同最大元素会改变原有顺序)

li = [12, 45, 86, 52, 49, 32]
select(li)
print(li)

结果:
在这里插入图片描述

def bubbling(alist):
    """冒泡"""
    for j in range(len(alist) - 1):  # 遍历需要比较的数到倒数第二个就行即len(alist)-1
        count = 0
        for i in range(len(alist)-1 - j):  # 遍历需要比较的数 范围:减去j循环过的
            if alist[i] > alist[i + 1]:  # 这个和下一个进行比较
                alist[i], alist[i + 1] = alist[i + 1], alist[i]  # 互换位置
                count += 1
        if 0 == count:
            break
        # 最优时间复杂度为O(n)
        # 最坏时间复杂度为O(n^2)
        # 稳定性:稳定,不改变原有的顺序


li = [77, 52, 54, 5, 89, 64, 699]
bubbling(li)
print(li)

结果:
在这里插入图片描述

# li = [77, 52, 54, 5, 89, 64, 699]
# li2 = []
# while len(li):
#     li2.append(min(li))
#     li.remove(min(li))
# print(li2)

结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值