Python算法

二分查找

def erfen(alist, item):  # 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
print(erfen([1,2,3,4,5,6,7],1))
def erfen(ulist,item):
    if len(ulist)==0:
        return False
    else:
        mid=len(ulist)//2
        if item == ulist[mid]:
            return True,ulist.index(item)
        elif item<ulist[mid]:
            return erfen(ulist[:mid],item)
        else:
            return erfen(ulist[mid+1:],item)

print(erfen([1,3,4,5,6],3))

冒泡排序

alist=[5,3,2,1,9,55,33]
def fun(alist):
    for x in range(1,len(alist)):    	 #循环1-7
        for y in range(0,len(alist)-x):  #0下标的第一个元素循环到最大长度-x  #每次排序都会把最大的/最小的排到最后,最后一个元素不需要排序,所以-x
            if alist[y] < alist[y+1]:    #上一个元素小于下一个元素
                alist[y],alist[y+1]=alist[y+1],alist[y]  #互换位置
    return alist
print(fun(alist))

选择排序

alist=[4,3,2,9,6,4]
def xuan(alist):
    for x in range(0,len(alist)):
        num=alist[x]            		#每次循环要比较的元素
        for i in range(x+1,len(alist)): #循环依次要进行比较的x+1下标的元素
            if alist[i] < num:         	#如果依次循环进行比较的元素小于比较的元素
                alist[i],num = num,alist[i]
                alist[x] = num                #互换位置
    return alist
print(xuan(alist))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值