python的算法(二分法、冒泡排序、选择排序)

1、二分法

def erfen(alist,item):
    # 构造初始下标和结束下标
    first = 0
    last = len(alist)-1
    # 构造循环比较条件
    while first <= last:
        #构造中间值下标
        mid = (first+last)//2
        if item == alist[mid]:
            return True,alist.index(item)
        else:
            # 如果说查询的值大于中间值的的话
            if item>alist[mid]:
                first = mid+1
            else:
                last = mid - 1
        return False

2、 通过迭代来查询

def fun(alist,item):
    if len(alist) == 0:
        return False
    else:
        mid = len(alist) // 2   #获取中间值的下标
        if item == alist[mid]:
            return True,item
        elif item < alist[mid]: # 如果查找的数小于中间值
            return fun(alist[:mid],item)    #从开头到中间值查询  [:mid]是中间值66往前得数
        else:
            return fun(alist[mid+1:],item) #   否则从中间值下一个数到结尾


print(fun([-22,-11,0,11,22,33,44,55,57,66,72,81,96,123456],44))

3、冒泡排序

def func(alist):
    # x就是 1 到 传过来的这个参数的长度总值
    for x in range(1,len(alist)):
        # i就是传过来的列表长度  -去x
        for i in range(0,len(alist)-x):
            # 如果过下标i 小于i+1
            if alist[i] > alist[i+1]:
                # name下标i  就和下标i+1 互换位置
                alist[i],alist[i+1]  = alist[i+1],alist[i]
    # 返回重组后的列表
    return alist

4、选择排序

def func(alist):
    # x就是1到传过来的这个参数的总长度
    for x in range(0,len(alist)):

        # min_num 就等于每次循环的小标对应数字
        min_num = alist[x]

        # 循环小标x+1 到所有下标长度
        for i in range(x+1,len(alist)):
            # 如果下标i的参数大于min_num
            if alist[i] < min_num:
                # 互换位置(参数互换)
                alist[i],min_num = min_num,alist[i]
        alist[x] = min_num
    return alist

print(func([1,55,22,66,44,22,88]))
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值