自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 使用python实现Strassen矩阵乘法算法

先将矩阵打包成一个类,重载加法和减法运算,就可以很简单地实现了,目前这个程序中还有一些冗余的地方,比如将行数和列数分别讨论,其实可以归为一个矩阵size。类的定义感觉需要改进,不过懒得做下去了# -*- coding: utf-8 -*-def matrixproduct(a, b): def matrixproductmask(mat_a, mat_b): if m

2016-08-17 11:38:01 2829

原创 在一个数列中找出最大和的连续子列

算法分别是复杂度n^2的蛮力算法,复杂度为n*log(n)的递归算法,上述两者的混合算法,以及复杂度为n的递推算法。最后一个算法我找到的参考答案用了两个循环,而我的算法只使用了一个循环# -*- coding: utf-8 -*-import timedef findmaximumsubarraybrute(l): maximumsum = l[0] low = 0

2016-08-11 14:54:24 1266

原创 算法导论习题2-4 Inversions 逆序数

简单地改一下归并排序即可# -*- coding: utf-8 -*-def inversioncountmask(l): l1 = l[:] return inversionscount(l1, 0, len(l1)-1)def inversionscount(l, p, r): if p < r: q = (p+r)/2 re

2016-07-25 19:17:58 753

原创 归并-插入混合排序算法

这里列出了插入排序,归并排序,以及归并-插入混合排序的算法并测试了三种排序在最坏情况下的运算速度比较。结果表明归并-插入混合排序是优于前两者的。但是混合排序在选择切换临界值时,并不是简单比较在前两种算法在不同序列长度下的快慢,因为归并排序在临界值附近过分割,反而会降低效率。不过我也没找到更好的方法# -*- coding: utf-8 -*-def mergesort(l, p, r):

2016-07-15 15:24:29 1691 1

原创 算法导论2.3-7习题

先使用归并排序进行排序,再建立其补集,对这两个排序后的集合进行元素比较,找到相同元素即寻找到答案def findthecomplementary(s, x): l1 = list(s) l2 = [] n = len(l1) mergesort(l1, 0, n-1) for a in reversed(l1): if (x - a) !

2016-07-13 19:42:07 378

原创 使用循环和递归方法实现二分法搜索

对于已排序的序列,实现二分法搜索算法,有循环和递归两种策略。对于这种算法,中心点一直是一个开区间,因此下一次搜索时新区间应该相应的+-1,从而最终start>end# -*- coding: utf-8 -*-def binarysearch1(l, item): start = 0 end = len(l) - 1 while start <= end:

2016-07-13 17:55:44 2297

原创 使用递归进行插入排序

算法导论习题2.3-4# -*- coding: utf-8 -*-def linearsort(l, n): if n > 1: linearsort(l, n-1) insert(l, n)def insert(l, n): an = l.pop(n-1) for y in range(0, n-1): if a

2016-07-12 11:29:31 819

原创 再次mergesort

虽说python写程序可以非常简洁,但是初学python写一个归并排序还是一股子c味# -*- coding: utf-8 -*-def mergesort(l, p, r): if p < r: q = (p+r)/2 mergesort(l, p, q) mergesort(l, q+1, r) merge(l, p

2016-07-08 17:59:56 334

原创 归并排序使用在c++STL实现

相比上一个C++归并排序的版本,这次复习了一下STL的基本方法因为要使用随机访问迭代器,所以序列使用了vector容器,而要使用lis容器t的merge算法,因此在合并时使用了list容器和vector容器之间相互转换不过让我疑惑的是,似乎VS2013上迭代器不能重载[]运算符?#include#include#include#includetemplatevoid Mer

2016-07-07 21:36:02 4031

原创 开始学习算法导论

将书中算法用C++还原一遍,慢慢学习首先是Merge-sort算法

2016-07-07 16:12:46 271

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除