精华内容
下载资源
问答
  • python算法趣味题目

    2012-07-10 18:47:38
    python算法趣味题目.doc
  • python算法之迭代算法

    千次阅读 2020-01-26 21:24:55
    迭代算法基础 确认迭代变量 在可以使用迭代算法解决的值中至少存在一个迭代变量。可以直接或者间接的用旧值推出新值。 建立迭代关系式 迭代关系式是指如何从变量的前一个值推出下一个值的公式或者关系。 对迭代过程...

    前言

    迭代法也叫辗转法,是一种不断用变量的旧值递推新值的过程,在解决问题时总是重复利用的一种方法。

    迭代算法基础

    确认迭代变量

    在可以使用迭代算法解决的值中至少存在一个迭代变量。可以直接或者间接的用旧值推出新值。

    建立迭代关系式

    迭代关系式是指如何从变量的前一个值推出下一个值的公式或者关系。

    对迭代过程进行控制

    1. 所需的迭代次数是确定的,可以计算出来,可以构建一个固定次数的循环来实现对迭代过程的控制
    2. 所需的迭代次数无法确定,需要进一步分析出用来结束迭代过程的条件。

    解决“非线性方程”问题

    求ex-cos( π \pi πx)=0

    import math  #为了使用cos函数
    
    def takeStep(Xcur):
        Xnex=[0,0,0];
        Xnex[0]=math.cos(Xcur[1]*Xcur[2])/3.0+1.0/6
        Xnex[1]=math.sqrt(Xcur[0]*Xcur[0]+math.sin(Xcur[2])+1.06)/9.0-0.1
        Xnex[2]=-1*math.exp(-1*Xcur[0]*Xcur[1])/20.0-(10*math.pi-3)/60
        return Xnex
        
    def initialize():
        X0=[0.1,0.1,-0.1]
        return X0
    
    def ColculateDistance(Xcur,Xnew):
        temp=[Xcur[0]-Xnew[0],Xcur[1]-Xnew[1],Xcur[2]-Xnew[2]]    
        dis=math.sqrt(temp[0]*temp[0]+temp[1]*temp[1]+temp[2]*temp[2])
        return dis
        
    def iteration(eps,maxIter):
        cur_eps=10000
        Xcur=initialize()
        Xnew=[0,0,0]
        iterNum=1
        print("--------------------------开始迭代--------------------------")
        print("  迭代次数  |    Xk1    |    Xk2    |    Xk3    |    eps    ")
    
        while (cur_eps>eps and iterNum<maxIter) :
            Xnew=takeStep(Xcur);
            cur_eps=ColculateDistance(Xcur,Xnew)
            print("     %d       %.8f  %.8f  %.8f  %8.8f"%(iterNum,Xcur[0],Xcur[1],Xcur[2],cur_eps))
            iterNum+=1
            Xcur=Xnew
        return 0
        
    
    iteration(10**-10,200)
    

    运行结果截图

    递归与迭代算法的区别

    递归是从上向下逐步拓展需求,最后从下向上运算,即有f(n) ~ f(1),再由 f(1) ~ f(n)。迭代算法是直接从下向上运算,由f(1) ~ f(n),

    展开全文
  • python算法引入

    千次阅读 2019-06-29 20:26:04
    这里主要是介绍算法的介绍以及一些判断算法好坏的标准和方式


    这里主要是介绍算法的介绍以及一些判断算法好坏的标准和方式

    引入

    如果a+b+c = 1000,且a^2 + b^2 = c^2,如何求出所有a,b,c可能的组合?

    第一次尝试:

    import time
    print(
    展开全文
  • Python算法系列-哈希算法

    千次阅读 多人点赞 2020-04-12 23:11:10
    哈希算法一、常见数据查找算法简介二、什么是哈希三、实例:两个数字的和1.问题描述2.双指针办法解决3.哈希算法求解四、总结 哈希算法又称散列函数算法,是一种查找算法。就是把一些复杂的数据通过某种映射关系。...

    在这里插入图片描述

    哈希算法又称散列函数算法,是一种查找算法。就是把一些复杂的数据通过某种映射关系。映射成更容易查找的方式,但这种映射关系可能会发生多个关键字映射到同一地址的现象,我们称之为冲突。在这种情况下,我们需要对关键字进行二次或更多次处理。出这种情况外,哈希算法可以实现在常数时间内存储和查找这些关键字。

    一、常见数据查找算法简介

    常见的数据查找算法:
    在这里插入图片描述
    顺序查找:是最简单的查找方法。需要对数据集中的逐个匹配。所以效率相对较低,不太适合大量数据的查找问题。
    二分法查找:效率很高,但是要求数据必须有序。面对数据排序通常需要更多的时间。
    深度优先和广度优先算法:对于大量的数据查找问题,效率并不高。这个我们后面专门讲解。
    阿希查找算法:查找速度快,查询插入,删除操作简单等原因获得广泛的应用。

    二、什么是哈希

    哈希查找的原理:根据数量预先设一个长度为M的数组。使用一个哈希函数F并以数据的关键字作为自变量得到唯一的返回值,返回值的范围是0~M-1。这样就可以利用哈希函数F将数据元素映射到一个数组的某一位下标,并把数据存放在对应位置,查找时利用哈希函数F计算,该数据应存放在哪里,在相应的存储位置取出查找的数据。
    这里就有一个问题:
    关键字的取值在一个很大的范围,数据在通过哈希函数进行映射时。很难找到一个哈希函数,使得这些关键字都能映射到唯一的值。就会出现多个关键字映射到同一个值的现象,这种现象我们称之为冲突。
    哈西算法冲突的解决方案有很多:链地址法,二次再散列法。线性探测再散列建立一个公共溢出区
    在这里插入图片描述
    注意:链地址法本质是数组+链表的数据结构
    链地址法存储数据过程
    首先建立一个数组哈希存储所有链表的头指针。由数组的关键字key通过对应的哈希函数计算出哈希地址。找到相应的桶号之后,建立新的节点存储该数据。并把节点放到桶内的链表的最后面或者最前面。
    链地址法查找数据:由数据关键字通过哈希。函数计算关键字对应的哈希地址之后顺序比较同类不节点。是否与所查到的关键字一样,直到找到数据为止,如果全部节点都不和关键字一样,则书名哈系表里没有该数据。解决了哈希函数的冲突。
    用链地址法构造的散列表插入和删除节点操作易于实现,所以构造链表的时间开销很低。但是指针需要开辟额外的地址空间,当数据量很大时会扩大哈希表规模,内存空间要求较大。

    三、实例:两个数字的和

    1.问题描述

    要求在给定的一些数字中找出两个数,使得它们的和为嗯,前提是这些数据中保证有答案,并且只有一个答案。例如给3、4、5、7、10。从中选出两个数字使它们的和为11,可以选择4和7。

    2.双指针办法解决

    def  twosum(nums,target):
    	res = [] #存放结果编号
    	newnumber = nums [:] #将数据深拷贝一份
    	newnumber.sort() #对拷贝结果排序
    	left = 0 #定义左指针
    	right = len(newnumber) -1 # 定义右指针
    	while left < right:
    		if newnumber[left] + newnumber[right] ==target: #在原始数组中第一个元组寻找原始下标
    			for i in range(0,len(nums)):
    				if nums[i] == newnumber[left]:
    					res.append(i) #将下标结果接入集
    					break
    				for i in range(len(nums) - 1 , -1 , -1):#向回找,寻找第二个元组
    					if nums[i] == newnumber[right]:
    						res.append(i)
    						break
    			res.sort()
    			break
    		elif newnumber[left] +newnumber[right] < target:
    			left = left +1
    		else :
    			right = right -1
    	return (res[0] + 1 ,res[1] + 1 )
    s =twosum([3,4,5,7,10],11)
    print('下标是:',s)
    

    双指针解决方案:
    第一步:对数据进行排序
    第二步:移动指针寻找答案
    第三步:发现答案去原始数据中查找这两个元素的位置
    显然第一步和第三步很浪费时间,我们使用哈希算法,规避排序问题,直接查找数据和下标的对应关系。

    3.哈希算法求解

    def  twosum(nums,target):
    	'''
    	这个函数只能解决两个数字和,且答案有且仅有一个的情况
    	'''
    	dict = {}
    	for i in range(len(nums)):
    		m = nums[i]
    		if target - m in dict:#判定target - m 是否在字典中
    			return (dict[target-m]+1,i +1) #存在返回连个数的下标
    		dict[m] = i #若不存在则记录键值对的值
    s =twosum([3,4,5,7,10],11)
    print('下标是:',s)
    

    字典使用dict[key] = value 来记录键值对的关系

    四、总结

    • 使用哈希算法解决查找问题,不仅效率高,而且代码更少更容易理解,我们使用哈希算法解决查找问题将事半功倍,
    • 这个示例问题是一个经典问题,还有后续一些问题,三个数、四个数求和问题。
    展开全文
  • python 算法-二叉搜索树

    万次阅读 2020-07-10 14:01:14
    python 算法-二叉搜索树 文章目录python 算法-二叉搜索树1、实现2、二叉搜索树-Coding 1、实现 2、二叉搜索树-Coding

    python 算法-二叉搜索树

    1、实现

    2、二叉搜索树-Coding

    展开全文
  • 挪威畅销书作者Magnus Lie Hetland的力作,用python语言解释部分数据结构和基础算法
  • Python 算法实现

    千次阅读 2020-02-13 10:39:39
    十大排序算法
  • Python算法教程_中文版.pdf Python算法教程_中文版.pdf
  • Python算法分析与设计:最大流算法

    千次阅读 2019-02-01 14:30:03
    Python算法分析与设计:最大流算法 一、实验目的 1、掌握最大流问题的定义,了解流量、容量以及他们之间的关系。 2、掌握通过增广路径求最大流问题的Forder-Fulkerson和Edmond-Karp算法,理解这两个算法之间的异同 3...
  • 人脸识别算法 python

    2017-09-10 22:16:05
    人脸识别算法 python人脸识别算法 python人脸识别算法 python人脸识别算法 python人脸识别算法 python人脸识别算法 python人脸识别算法 python
  • python emd算法

    2016-02-25 09:32:28
    python emd算法 Earth Mover's Distance
  • Python算法实战(上)

    千人学习 2019-04-29 21:26:53
    适用人群 Python 初、中级学习者和开发者,对 Python 数据结构和算法感兴趣的学生和开发者。 课程简介 计算机技术与语言发展迅速,但无论怎样发展,算法和数据结构是最底层的基础。 课程特点: 1.强调图解,课中...
  • 免费 Python算法教程_中文版pdf
  • Python算法- 剪绳子

    万次阅读 2020-08-01 12:21:33
    (求幂) 进一步简化,任意数可分解为奇偶之和,即 2 或 3 假定 n=6,分解比较结果 222 *3 结论:排除特殊情况,3 分解优先,2 次之 代码 python 实现 def cutRope(number): maxN=1 if 04: number -=3 maxN *=3 ...
  • Python算法系列—深度优先遍历算法【二叉树】

    千次阅读 多人点赞 2020-04-14 17:14:12
    深度优先遍历算法之二叉树一、什么是深度优先遍历二、二叉树1. 二叉树简介2.二叉树类型3.二叉树相关术语4. 二叉树的节点代码5. 二叉树遍历顺序6.深度优先遍历和广度优先遍历三、面试题+励志 ``这不就是二叉树吗?嗯...
  • python算法之Dijkstra Dijkstra算法是由荷兰计算机科学家迪杰斯特拉(Dijkstra)于1959 年提出的,因此又叫迪杰斯特拉算法。是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题。 实现原理: ...
  • python版本 算法详解

    2018-04-12 10:31:54
    python版本 算法详解 袁国忠翻译,适合基础入门,值得学习
  • Python入门简单、功能强大...什么算法算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有...
  • CPD 算法实现点云配准(python版本)

    万次阅读 2021-04-27 21:02:16
    Coherent Point Drift相干点漂移算法实现点云配准(python代码)
  • Python算法系列-双指针问题

    千次阅读 多人点赞 2020-04-11 19:05:44
    python算法-双指针问题一、数组合并1. 使用模拟指针和并两个有序数组2.模拟指针说明:二、二分法(折半查找法)1.有序数组的二分法查找2. 二分法说明三、链表(双链表和单链表区别) 一、数组合并 1. 使用模拟指针和...
  • java调用python算法

    千次阅读 2018-07-11 09:26:03
    做项目的时候,尤其是java开发时,经常会遇到调用python算法的情况,本人最近在项目中遇到这样一个问题:网页前端设计了一个与用户聊天的对话窗口(类似qq聊天),主要目的是为用户解答一些常见的问题。我想了一下...
  • 关于仿照js写python算法

    万次阅读 2019-07-24 14:57:48
    用了一套不知道哪弄来的 js加密算法 (我已经查到了,应该是出自这里 地址),有一个参数是通过 js 计算得到的,无奈我先想模拟登录就必须解决这个算法,这个说明是des, 但是和python中的第三方库提供的des算法根本不...
  • 送书 | 《趣学Python算法100例》

    千次阅读 2020-12-02 08:12:02
    又到了每周三的送书时刻啦!今天给大家带来的是《趣学Python算法100例》 (文末查看送书规则)内容简介本书从一些经典算法出发,为读者展示了100个Python趣味编程实例。...
  • 在GitHub上找到一个开源的项目实现了数学建模中常用的算法包括: 差分进化算法 遗传算法 粒子群算法 模拟退火算法 蚁群算法 免疫优化算法 人工鱼群算法 项目链接: https://github.com/zhangxiao123qqq/scikit-opt...
  • [Python]python算法入门 -- 栈(stack)

    千次阅读 2013-05-09 15:52:21
    ref:http://interactivepython.org/courselib/static/pythonds/BasicDS/stacks.html Stack : LIFO last-in first-out 生活中的例子: 放书,浏览器记录等 stack通常的操作: Stack() 建立一个空的栈对象 ...
  • 这可能是史上最全的Python算法集!

    千次阅读 多人点赞 2019-02-20 17:38:49
    来源 | CSDN(ID:CSDNnews)本文是一些机器人算法(特别是自动导航算法)的Python代码合集。其主要特点有以下三点:选择了在实践中广泛应用的算法;依赖最...
  • Python算法实战视频课程--图

    千人学习 2016-05-11 09:36:15
    图是程序设计中被广泛使用的数据结构, 它比栈,队列,树更复杂. 图是对实际问题进行数学...本套课程我们学习图的基本概念,常用接口, 以及如何在python中使用图, 图的基本算法, 后以几个经典问题体会图在实际问题中的应用.
  • Python算法实战视频课程--二叉树

    万人学习 2016-05-11 09:14:36
    二叉树是重要的抽象数据类型,解决很多问题时都需要它。通过本课我们学习这种重要的数据结构,本课注重实践,没有过多枯燥的理论,我们的重点放在编码实现各种算法,这对于熟练使用Python语言也是很有益处的。
  • Python算法性能提升的几种方式

    千次阅读 2017-08-11 20:53:29
    1、优化原本算法:在算法中尽量降低算法复杂度,充分利用已生成的数据作为缓存,...3、使用Numba:在Pypy中JIT技术能够显著提高python运行速度,但是由于兼容性问题,所以使用替代品的Numba来优化某一局部算法。而且Nu

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 618,482
精华内容 247,392
关键字:

python算法是什么意思

python 订阅