随笔分类 - 数据结构与算法(python版)
摘要:RSA算法运用了数学“两个大的质数相乘,难以在短时间内将其因式分解”的这么一套看似简单事实上真的是很困难的一个数学难题...... RSA加密算法的安全性 当p和q是一个大素数的时候,从它们的积pq去分解因子p和q,这是一个公认的数学难题。然而,虽然RSA的安全性依赖于大数的因子分解,但并没有从理论
阅读全文
摘要:python实现欧几里得算法代码: #欧几里得算法#递归算法实现:def gcd(a,b): if b==0: return a else: return gcd(b,a%b)print(gcd(12,16))#非递归算法实现def gcd1(a,b): while b>0: r=a%b a=b b
阅读全文
摘要:、 python实现钢条切割问题与最长工公共序列问题 #动态规划算法DP代码: #递归法计算斐波那契数列f(n)=f(n-1)+f(n-2)#递归算法-执行效率比较低,相同的问题算了好多遍—子问题的重新计算def fibnacci(n): if n==1 or n==2: return 1 else
阅读全文
摘要:python实现贪心算法代码如下: #贪心算法#1找零问题的贪心算法def change(t,n): #对t进行从大到小的排序 t.sort() t.reverse() #定义t的每一个的数量 m=[0 for _ in range(len(t))] for i,money in enumerate
阅读全文
摘要:python实现AVL树的代码: from BST import BiTreeNode1,BST #导入二叉搜索树的类进行继承class AVLNode(BiTreeNode1): def __init__(self,data): BiTreeNode1.__init__(self,data) se
阅读全文
摘要:python实现树与二叉树的代码:#创建二叉树的类class BiTreeNode: def __init__(self,data): self.data=data self.lchild=None #左孩子 self.rchild=None #右孩子a=BiTreeNode("A")b=BiTre
阅读全文
摘要:python实现代码如下所示: #创建一个哈希表的类别class hashtable: def __init__(self,size=101): self.size=size #self.T=[linklist() for i in range(self.size)] #创建长度为size的链表,T
阅读全文
摘要:python实现链表的代码如下所示: #链表的创建和连接函数#链表是由数据域item和next连接关系class Node: def __init__(self,item): self.item=item self.next=Nonea=Node(1)b=Node(2)c=Node(3)a.next
阅读全文
摘要:python实现代码如下所示: #导入python里面自带的数据结构模块(deque双向队列)from collections import deque#右边进来,左边出去,单向队列q=deque([1,2,3],5) #第一个参数为初始化的队列,第二个参数是队列的长度q.append(4) #队尾
阅读全文
摘要:python实现迷宫问题的栈和队列的解决方法: #迷宫问题#表示迷宫的颜色,0表示路通,1表示围墙maze=[ [1,1,1,1,1,1,1,1,1,1], [1,0,0,1,0,0,0,1,0,1], [1,0,0,1,0,0,0,1,0,1], [1,0,0,0,0,1,1,0,0,1], [1
阅读全文
摘要:#面试题1:判断两个字符串是否为相同字母的重新组合O(n2)#解决办法1,直接进行1个元素1个元素的进行搜索和对比def view(s,t): s=list(s) t=list(t) r=True r1=False if len(s)==len(t): for i in range(len(s)):
阅读全文
摘要:python版本实现代码如下所示: #定义一个栈Stack()class Stack: def __init__(self): self.stack=[] def push(self,element): self.stack.append(element) def pop(self): return
阅读全文
摘要:#topk问题的解决思路#先构造小根堆调整函数def sift(li,low,high): #li是指列表,low是指根节点位置,high是指最后一个元素位置 i=low #最开始跟节点的位置 j=2*i+1 #左边下一层孩子节点 tmp=li[low] #把堆顶元素存下来 while j<=hig
阅读全文
摘要:#堆排序的python版本代码#堆排序的向下调整函数#大根堆的建立方函数def sift(li,low,high): #li是指列表,low是指根节点位置,high是指最后一个元素位置 i=low #最开始跟节点的位置 j=2*i+1 #左边下一层孩子节点 tmp=li[low] #把堆顶元素存下来
阅读全文
摘要:实现python代码如下: import syssys.setrecursionlimit(100000) #设置递归的最大限制次数为100000次from cal_time import *import random#递归partition函数def partition(li,left,right
阅读全文
摘要:运行效率较慢的三大排序算法:冒泡、选择与插入算法,时间复杂度都为O(n2),运行效率较慢。 #python 代码实现如下所示: li=[2,1,4,5,7,8,9,5,3]#冒泡算法(升序算法)O(n2)import randomfrom cal_time import *@cal_timedef
阅读全文
摘要:1、计算程序运行的时间函数(python版本)import timedef cal_time(func): def wrapper(*args,**kwargs): t1=time.perf_counter() result=func(*args,**kwargs) t2=time.perf_cou
阅读全文
摘要:第二章 查找和排序算法课时1:列表查找1、列表查找的含义:从对象中查找某一个特定的元素2、列表查找的方式包含两种:顺序查找和二分查找3、顺序查找算法:从开始一直搜索到最后一个元素进行查找,for循环,时间复杂度为O(n);4、二分查找针对有效的列表直接进行首尾二分查找,不断使得候选区减半,所以其时间
阅读全文
摘要://2020.02.29数据结构与算法入门(python版本)第1章 评判算法的优劣指标有哪些?课时1:算法的基本概念 1、算法Algorithm是一个计算过程,是指解决一个问题的方法.2、数据结构是指数据存储的一种结构方式,是静态的.3、程序=数据结构+算法(尼古拉斯凯奇说过的一句著名的话).课时
阅读全文