python 冒泡排序 插入排序

文章提供了两个Python函数,分别实现了冒泡排序和插入排序算法。冒泡排序中使用了标志位进行优化,如果在一轮遍历中没有发生交换,则说明列表已有序。插入排序则是通过比较将元素插入到已排序部分的合适位置来完成排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

冒泡排序
def mao_pao(num_list):
    num_len = len(num_list)
    # 控制循环的次数
    for j in range(num_len):
        # 添加标记位 用于优化(如果没有交换表示有序,结束循环)
        sign = False
        # 内循环每次将最大值放在最右边
        for i in range(num_len - 1 - j):
            if num_list[i] > num_list[i + 1]:
                num_list[i], num_list[i + 1] = num_list[i + 1], num_list[i]
                sign = True

            # 如果没有交换说明列表已经有序,结束循环
        if not sign:
            break
    return num_list

if __name__ == '__main__':
    a = [2,1]
    b = mao_pao(a)
    print(b)

插入排序

def inert_sort(l):
    l1 = [l[0]]
    for i in range(len(l)-1):
        for j in range(len(l1)):
            if l[i+1] <= l1[0]:
                l1.insert(0, l[i+1])
                break
            elif l[i+1] > l1[len(l1)-1]:
                l1.append(l[i+1])
                break
            elif l1[j] < l[i+1] and l1[j+1] >= l[i+1] :
                l1.insert(j+1, l[i+1])
                break

    return  l1
if __name__ == '__main__':
    l = [0, 3, 1, 5, 8, 4, 4, 5, 6]
    new_l = inert_sort(l)
    print(new_l)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值