![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法导论——python实践
文章平均质量分 59
风卷残荷hust
这个作者很懒,什么都没留下…
展开
-
算法导论——python实践(2.简单排序算法)
2.1简单排序算法 # 插入排序 #类比打牌的时候手牌的插入排序 a=[1,4,6,3,7,8,9,543,2,6,78,90,54] for j in range(1,len(a)): key=a[j] i=j-1 while (i>=0 and a[i]>key): a[i+1]=a[i] i=i-1 a[i+1]=key print (a) #选择排序 ...原创 2018-07-05 11:40:44 · 206 阅读 · 0 评论 -
算法导论——python实践(4.2矩阵乘法的Strassen算法)
4.2.1 矩阵乘法的暴力解法#暴力解法 def matrix_multiply(a,b): n=len(a) c=[[0]*n for i in range(n)]#快速创建n阶初始化方阵 for i in range (0,n): for j in range(0,n): c[i][j]=0 for k i...原创 2018-07-14 21:33:35 · 1537 阅读 · 1 评论 -
算法导论——python实践(4.1最大子数组问题)
最大子数组问题描述:寻找数组A的和最大非空连续子数组 4.1.1暴力求解 简单的尝试对每对可能存在的子数组的和进行计算,长度为n的数组总共有n*(n+1)/2中可能 # 最大子数组问题暴力求解 def find_key(dict): new_keylist=[] b=max(dict,key=dict.get)#找出dict中的值最大值所对应的关键字(这里表示最大...原创 2018-07-30 20:00:10 · 309 阅读 · 0 评论 -
算法导论——python实践(5.概率分析和随机算法)
5.1 雇用问题 问题描述: 假设你要雇佣一个新的办公室助理,雇佣代理每天想你推荐一个应聘者(连续推荐n个),你面试这个人,如果这个应聘者比目前的办公室助理更优秀,你就会辞掉当前的办公室助理,然后聘用这个新的。面试一个人需付给雇佣代理一笔费用,聘用办公助理也需要费用。 假设面试费用为Ci,雇佣的费用为Ch,假设整个过程中雇佣了m次,于是总的费用是 nCi+mCh。由于n是固定值,总费...原创 2018-08-02 20:59:51 · 752 阅读 · 1 评论 -
算法导论——python实践(6.堆排序)
1、堆的组织形式、建堆 简单来讲就是将数组按照完全二叉树的形式排列。叶节点的元素个数最多为2^(n-1)次方,其中n为堆高度。 最大堆:某一根叶节点的元素小于等于根节点的数值。通常用于排序 最小堆:某一根叶节点的元素大于等于根节点的数值。通常用于构造优先队列 首先建立最大堆: 函数输入参数为一个序列和序列的某一下标。 对于某一下标,首先求出该节点下的左子树和右子树下标,左子树和右子树分别...原创 2018-09-11 11:45:48 · 330 阅读 · 3 评论 -
算法导论——python实践(7.快速排序)
1、快速排序的描述 快速排序是原址排序,不用新增某一序列用于存储在排序过程中的临时变量。原址排序就是在原来的数组上进行操作。 主要分为两步 分解:对于一个数组A[p.....r]排序,将其划分为两个子数组A[p.....q-1]和A[q+1.....r],使得A[p.....q-1]中的每一个元素都小于等于A[q],而A[q]也小于等于A[q+1.....r]中的每一个元素。此时我们就能将A...原创 2018-09-13 22:02:41 · 812 阅读 · 0 评论