首页 > 编程语言 >Python算法

Python算法

时间:2023-11-09 21:11:06浏览次数:44  
标签:return Python hanoi list 算法 time print def

递归-汉诺塔

查看代码
 A = [1,2,3,4]
B = []
C = []


def hanoi(n, A, B, C):
    if n == 1:  # 终止条件
        C.append(A.pop())
        return
    else:
        hanoi(n - 1, A, C, B)  # 将A经过C移动到B
        print(n,A,B,C)
        C.append(A.pop())  # 此时A还剩下最大的盘子,将这个盘子移动到C
        hanoi(n - 1, B, A, C)  # 将B通过A移动到最后一根C


hanoi(len(A), A, B, C)  # 递归调用
print(A, B, C)

顺序查找-列表、二分

查看代码
 import time

def get_time(f):
    def inner(*arg,**kwarg):
        s_time = time.time()
        res = f(*arg,**kwarg)
        e_time = time.time()
        print('耗时:{%.5f}秒' %(e_time - s_time))
        return res
    return inner


li = [1,2,3,4,5,96,55,45]


#顺序查找,线性查找
@get_time
def linear_search(list,val):
    for ind,dest in enumerate(list):
        if dest== val:
            return ind
    else:
        return None

# print(linear_search(li,55))


#二分查找,前提是有序
@get_time
def dehalf_search(list,val):
    lt = list.sort()
    left = 0
    right = len(li)-1
    while left<=right:#区间内还有候选值
        mid = (left+right)//2 #总是向下整取
        if list[mid] == val:
            return mid
        elif list[mid]>val:
            right = mid-1
        else: #mid<val
            left = mid+1
        print(left, right, mid)
    else:
        return None

print(dehalf_search(li,55))

 

标签:return,Python,hanoi,list,算法,time,print,def
From: https://www.cnblogs.com/YiMo9929/p/17822854.html

相关文章

  • Python:logging日志模块
    Python:logging日志模块1、logging日志的介绍,在现实生活中,记录日志非常重要,比如:银行转账时会有转账记录;飞机飞行过程中,会有个黑盒子(飞行数据记录器)记录着飞机的飞行过程,那在咱们python程序中想要记录程序在运行时所产生的日志信息,怎么做呢?可以使用logging这个包来完成记录......
  • 【python进阶】14大模块200页知识体系md笔记,第5篇:python下的linux命令使用
    本文从14大模块展示了python高级用的应用。分别有Linux命令,多任务编程、网络编程、Http协议和静态Web编程、html+css、JavaScript、jQuery、MySql数据库的各种用法、python的闭包和装饰器、mini-web框架、正则表达式等相关文章的详细讲述。全套Python笔记直接地址:请移步这里共......
  • Primal-Dual 原始对偶算法
    想把spfa换成dij,用Johnson里面的技巧,给予每个点一个势能\(h_u\),边\((u,v,w)\)的新边权为\(w+h_u-h_v\),为了保证其\(\geq0\)以源点为最短路跑最短路后赋值\(h_u\getsd_u\)即可。增广之后会加入反向边,考虑怎么更新势能。首先一条边的反向边被加入,其满足什么条件,然后......
  • python的垃圾回收机制
    python解释器在执行到定义变量的语法时,会申请内存空间来存放变量的值,而内存的容量是有限的,这就涉及到变量值所占用内存空间的回收问题,当一个变量值没有用了(垃圾)就应该将其占用的内存回收从逻辑层面分析,定义变量将变量值存起来的目的是为了以后取出来使用,而取得变量值需要通过......
  • Jetson Mediapipe GPU/CUDA Python 包构建
    使用CPU版本的Mediapipe延迟真的很高,所以试着构建了GPU版本的Mediapipe。GPUSupport | MediaPipe | GoogleforDevelopers然而Google官方的教程非常过时且并不是针对Python包的教程,参考价值非常非常小。因此搜集各路社区论坛,折腾了一个星期终于构建成功。......
  • Python自动化办公——3个Excel表格中每个门店物品不同,想要汇总在一起(方法五)
    大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Python自动化办公处理的问题,一起来看看吧。上一篇文章中,我们已经看到了四种解决办法了,这一篇文章我们一起来看看另外一种方法。二、实现过程这里【论草莓如何成为冻干莓】给了unstack()操作的方法,代......
  • Python美丽图案生成方法
    使用samila库可以生成美丽的图案,例如:#pipinstallsamila==1.1orpip3installsamila==1.1importmatplotlib.pyplotaspltfromsamilaimportGenerativeImage#g=GenerativeImage()#g.generate()#g.plot()#plt.show()importrandomimportmathdeff1(x......
  • 文心一言 VS 讯飞星火 VS chatgpt (131)-- 算法导论11.2 3题
    三、用go语言,Marley教授做了这样一个假设,即如果将链模式改动一下,使得每个链表都能保持已排好序的顺序,散列的性能就可以有较大的提高。Marley教授的改动对成功查找、不成功查找、插入和删除操作的运行时间有何影响?文心一言:Marley教授的假设是关于调整链表(可能是一个散列链表)以保......
  • python中 “instance”关键字的作用
    在Python中,尤其是在使用Django框架时,“instance=”参数通常与表单(Forms)和模型(Models)操作相关。在Django表单系统中,这个参数经常被用于以下两种情况:在表单初始化时填充数据:当你创建一个ModelForm的实例并传递一个模型实例给instance=参数时,表单将用模型实例的数据填充它的字段。......
  • # yyds干货盘点 # Python自动化办公——3个Excel表格中每个门店物品不同,想要汇总在一
    大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Python自动化办公处理的问题,一起来看看吧。上一篇文章中,我们已经看到了四种解决办法了,这一篇文章我们一起来看看另外一种方法。二、实现过程这里【论草莓如何成为冻干莓】给了unstack()操作的方法,代码如下......