回顾基础算法,会有不同的收获

冒泡排序

from random import randint


def maopao(lst):
    flag = False
    for i in range(len(lst)):
        if i+1<len(lst) and lst[i]>lst[i+1]:
            lst[i],lst[i+1] = lst[i+1],lst[i]
            flag = True
    return flag,lst
    


if __name__ == '__main__':
    l = [randint(1,101) for i in range(10)]
    flag = True
    while flag:
        flag, l = maopao(l)
        if not flag:
            break
        else:
            flag, l = maopao(l)
    print(l)

选择排序

from random import randint


def xuanze(lst):
    tep = 0
    for i in range(len(lst)):
        m = tep
        for i in range(tep,len(lst)):
            if lst[tep] > lst[i] and lst[m]>lst[i]:
                m = i
        lst[m],lst[tep] = lst[tep],lst[m]
        tep = tep+1
    return lst


if __name__ == '__main__':
    l = [randint(1,101) for i in range(10)]
    print(xuanze(l))

二分法查找

from random import randint


def erfenfa(lst,a):
    start = 0
    lens = len(lst)-1
    while start <= lens:
        if a < lst[(start+lens)//2]:  # 11  12
            lens = (start+lens)//2-1
        elif a > lst[(start+lens)//2]:
            start = (start+lens)//2+1
        elif a == lst[(start+lens)//2]:
            print(lst[(start+lens)//2])
            break
    else:
        print("没有找到!")
        
        
if __name__ == "__main__":
    lst = [randint(1,101) for i in range(20)]
    lst = list(set(lst))
    lst.sort()
    erfenfa(lst,lst[len(lst)-1])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啊~小 l i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值