
算法
文章平均质量分 77
赖莱莱
这个作者很懒,什么都没留下…
展开
-
分治算法——大整数乘法(multiplication of large integers)
一、 大整数乘法(multiplication of large integers)(1) 模拟多位数乘法时列竖式进行计算的方法(2) 例子:① 1233*2341233 2466236993481212424原创 2017-04-07 20:10:08 · 2698 阅读 · 1 评论 -
karatsuba算法——(分治算法)
一、 karatsuba multiplication algorithm(1)Karatsuba算法主要应用于两个大数的相乘,原理是将大数分成两段后变成较小的数位,然后做3次乘法,并附带少量的加法操作和移位操作。现有两个大数,x,y。首先将x,y分别拆开成为两部分,可得x1,x0,y1,y0。他们的关系如下:x = x1 * 10m + x0;y = y1 * 10m转载 2017-04-07 21:20:51 · 11488 阅读 · 1 评论 -
康拓展开+康拓展开的逆运算
康拓展开:是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩。康托展开的实质是计算当前排列在所有由小到大全排列中的顺序(名次),因此是可逆的。公式X=a[n]*(n-1)!+a[n-1]*(n-2)!+…+a[i]*(i-1)!+…+a[1]*0!其中,a[i]为整数,并且0举例例如,一个数组s={1,2,3,4,5,6,7,8,9},它的一个排列s1={3 ,5转载 2017-05-16 15:19:39 · 399 阅读 · 0 评论 -
merge-sort (归并排序)——分治算法
(1) 将一个序列分成很多个子序列,将各个子序列分别排序后再将子序列合并/* 归并排序:将一个序列分成很多个子序列,分别将子序列进行排序,然后再将子序列合并*/#include#include#includeusing namespace std; //将子序列a[first~mid] a[mid,last]合并 void merge(int a[] , int原创 2017-04-07 21:24:59 · 445 阅读 · 0 评论