Python实现冒泡排序与快速排序

列表[3, 5, 8, 1, 2, 10, 6],使用不同的算法对列表进行生序排序,结果如下:[1, 2, 3, 5, 6, 8, 10]

冒泡排序

思路:每次比较两个相连的元素,若符合此规则,则交换位置,若不符合规则,则不动,多次循环之后完成做两层循环,内层循环找出最大的值
代码如下:

# 定义函数名称,传入lis
def bubbleSort(lis):
    # 计算传入的列表长度
    len_lis = len(lis)
    # 做双层循环
    for i  in range(len_lis-1):
        # 内层循环减去已经循环的值
        for j in range(len_lis-1-i):
            # 此处大小决定是降序还是升序
            if lis[j]<lis[j+1]:
                lis[j],lis[j+1]=lis[j+1],lis[j]
    return lis

lis = [3, 5, 8, 1, 2, 10, 6]
print(bubbleSort(lis))

 

快速排序 

思路:快速排序法是分而治之,选择一个基准,将大于基准的值放在右边,小于基准的值放在左右,如此不停的反复,此处用到了递归调用思路

# 快速排序法
def quickSort(lis):
    # 计算列表长度
    len_lis = len(lis)
    # 如果列表的长度已经小于2,则可以将列表 返回
    if len_lis < 2:
        return lis
    # 设置基准值为lis[0]
    basevalue = lis[0]
    # 将小于基准值放在列表中
    left_lis = []
    # 将大于基准值放在此列表中
    righ_lis = []
    # 对列表进行循环
    for i in range(1, len_lis):
        # 判断值是否小于基准
        if lis[i] < basevalue:
            left_lis.append(lis[i])
        else:
            righ_lis.append(lis[i])
    # 递归调用
    return quickSort(left_lis) + [basevalue] + quickSort(righ_lis)
lis = [3, 5, 8, 1, 2, 10, 6]
print(quickSort(lis))

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值