数据结构与算法
云金杞
量化研究员\CTA量化基金经理,金融硕士,CIIA,CFP,FRM,CFA,擅长使用python进行数据分析和建模,熟练使用backtrader、tbquant等量化平台。
展开
-
python与算法:单链表剖分函数(对链表的元素可以按照是否满足特定功能切分为两个新的链表)
def funct(x): if x%2==0: return True else: return Falsedef partition(lst,pred): satisfy_list=LList() unsatisfy_list=LList() p=lst._head # lst里面有元素...原创 2019-07-01 22:29:01 · 414 阅读 · 1 评论 -
python与算法:基于顺序表和链接表实现的栈
## 栈的两种形式(顺序表与链接)class LNode: def __init__(self,elem,next_=None): self.elem=elem self.next=next_class LinkedListUnderflow(ValueError): passclass StackUnderflow(ValueError...转载 2019-07-05 20:01:30 · 395 阅读 · 0 评论 -
python与算法:顺序表和链接表之间的相互转化
# 顺序表转化为链接表def convert_to_LList(List): m=LList() for i in List[::-1]: m.prepend(i) return mList=[1,2,3]m=convert_to_LList(List) m.printall()# 链接表转化为顺序表def convert_to_LList(...原创 2019-06-30 22:17:32 · 348 阅读 · 0 评论 -
python与算法:创建一个链表,和python原生的list对应,可以根据不同的业务场景选择使用那个
class LNode: def __init__(self,elem,next_=None): self.elem=elem self.next=next_class LinkedListUnderflow(ValueError): pass class LList: def __init__(self): ...原创 2019-06-30 21:20:29 · 851 阅读 · 0 评论 -
python与算法:冲突图结构分组分析
以字典表示冲突图,以关键码(A,B)关联的值为True表示冲突,没有值表示不冲突。用这种技术完成本章求无冲突的分组的程序result={('AB','BC'):True, ('AB','EA'):True, ('AB','BD'):True, ('AB','DA'):True, ('BC','EB'):True, ...原创 2019-06-28 16:16:46 · 929 阅读 · 1 评论 -
python与算法:python构造整数列表的方法总结并且计算构造效率
import numpy as npimport timeimport matplotlib.pyplot as pltdef test1(n): lst=[] for i in range(n): lst+=[i] return lstdef test2(n): lst=[] for i in range(n): ...原创 2019-06-28 14:37:46 · 560 阅读 · 0 评论 -
python与算法:两种计算平方根的算法的开销
import time# 使用牛顿迭代公式计算平方根def get_sqrt(x,e=10**(-6)): y=x while abs(y*y-x)>e: z=(y+x/y)/2.0 y=z return y### 使用基础数学的方法求平方根,并与牛顿迭代法进行对比def base_sqrt(num,e=10*...原创 2019-06-28 14:13:50 · 1970 阅读 · 0 评论 -
算法与python:一台每秒计算10亿次的计算机,使用递归法,从宇宙大爆炸计算到现在,能计算到第几个斐波那契数列?
# 从宇宙大爆炸开始,每秒10亿次的超级计算机,开始计算斐波那契数列,请问计算到多少的n,数字大概是多少?# 假设宇宙大爆炸到现在135亿年# 135*365*24*3600*10**8*10**9=1.618^nimport numpy as npn=(17+np.log(135*365*24*3600))/np.log(1.618)print(n)# 采用递归算法大约可以计...原创 2019-06-28 11:29:01 · 1479 阅读 · 0 评论 -
python与算法:算法的时间对比分析
算法时间的对比A算法的时间开销为100n^3,B的算法开销为0.5*2^n,问题规模为多大的时候B算法的更快?两种方法,一种是求解:0.5*2^n<100n^3得到的n的值就是满足条件的规模另一种是画图:可以比较清晰的表明随着规模增加,时间的消耗程度# 计算可得,在小于20的时候,B算法较快target_num=[]for i in range(100): ...原创 2019-06-28 10:28:50 · 895 阅读 · 0 评论 -
算法与python:使用高斯消元法计算行列式的值,并分析时间复杂度
# 首先,使用numpy直接求解import numpy as npa=np.random.random((3, 3))# a[0,0]=0np.linalg.det(a)# 自己编写算法求解def get_det(a): mutifier=1 i_value,j_value=a.shape # 如果第一行第一列不为0 if a[0][0]!=0:...原创 2019-06-28 10:03:34 · 3675 阅读 · 0 评论 -
算法:试证明求平方根的牛顿迭代法一定收敛
对于给定的正整数x与允许误差e,令变量y取任意正实数值,如另y=x;如果yy与x足够接近,即|yy-x|<e,计算结束并把y作为结果; 否则,取z=(y+x/y)/2; 将z作为y的新值,回到步骤1# 首先,编写代码是比较容易实现的def get_sqrt(x,e=10**(-6)): y=x while abs(y*y-x)>e: z=...原创 2019-06-27 20:31:31 · 4049 阅读 · 0 评论 -
python与算法:计算分位数
# 求分位数def get_quartiles(result_list,quartile_numer): ''' result_list:是待计算的分位数的数列,用list表示 quartile_numer:是要计算的分位数的比例 ''' result_list=sorted(result_list) num=len(result_li...原创 2019-08-14 21:43:39 · 3581 阅读 · 0 评论