1.1原始的低效算法

我们将n位(为方便讨论简化问题,我们假设n是2的幂)十进制整数(二进制也可以)X、Y都分为2段,每段的长度是n/2位。

如果现在直接用递归或分治进行编程,其算法复杂度为:

其中:T(n)代表规模为n的问题,系数4表示问题缩小到T(n/2)时,包含四次乘法(上式中AC/AD/BC/BD四次)

这是在没有进行优化情况下的算法复杂度(注意,此处虽然用了分治思想,但分治并不会降低算法复杂度,反而因其需要使用栈,增加了算法的空间复杂度)。

1.2高效的算法(运用了数学的小技巧)

我们知道,大整数乘法的基本运算是“乘法”运算,我们可以通过减少乘法的次数来降低算法复杂度!

从公式中可以发现,原来有四个基本乘积项:AC、AD、BC、BD,现在只有三个基本乘积项:(A-B)(C-D)、AC、BD。乘法运算的数量降低了,下面看看其复杂度变化:

复杂度从n2降到n1.59

1.3补充

有的小伙伴可能会问了,如果不分成两段,分成三段,四段甚至n段的时候时间复杂度会降低,结论是:

在大整数乘法中,当把大整数分为2段时,算法时间复杂度最低n1.59

随着段数逐渐增加,算法的时间复杂度也随之增加,当分段增加到n段时,算法时间复杂度退化到n2

java 整数乘法的算法,大整数乘法——分治算法的时间复杂度相关推荐

  1. c语言实验大整数,C语言编写大整数.doc

    C语言编写大整数 本人写的大整数是256进制的,每一个字节里面的每一位都是有用的,因此比较节省空间.前面我用宏定义定义了大整数最大为128字节,也就是1024位,当然你可以改变SIZE的大小来改变大整 ...

  2. python整数池_对Python中小整数对象池和大整数对象池的使用详解

    1. 小整数对象池 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间. Python 对小整数的定义是 [-5, 256] 这些整数对象是提 ...

  3. 哈工大(威海)算法实验一:分治算法实验大作业

    哈工大(威海)算法实验一:分治算法实验大作业 题目 某一高等院校有汽车学院.材料学院.计算机学院.软件学院:每个学院的一年级第一学期都开英语.高数.线代课程.每个学院每学期的成绩已经分别登录在同一个E ...

  4. Java实现大数乘法_Java实现大整数乘法

    请设计一个有效的算法,可以进行两个n位大整数的乘法运算 1 最暴力的方法:O(n^2) 2 我们采用分而治之的思想 将X和Y按如下方法分成两部分 那么 X = A*10^(n/2) + B Y = C ...

  5. 贪心算法-大整数乘法/加法/减法

    设有两个大整数相乘,X=61438521,Y=94736407.那么XY=5820464730934047.易知我么的算法需要O(N²)即O(8²)次操作. 如果我们把X和Y都拆成两半,由最高几位和最 ...

  6. 编程算法 - 大整数乘法

    大整数乘法 本文地址: http://blog.csdn.net/caroline_wendy/article/details/29353263 题目: 大整数乘法, 给定两个长度不超过10000的整 ...

  7. 信息学奥赛一本通 1307:【例1.3】高精度乘法 | 1174:大整数乘法 | OpenJudge NOI 1.13 09:大整数乘法

    [题目链接] ybt 1307:[例1.3]高精度乘法 ybt 1174:大整数乘法 OpenJudge NOI 1.13 09:大整数乘法 [题目考点] 1. 高精度 考察:高精乘高精 高精度计算讲 ...

  8. python整数池_【Python】Python中神奇的小整数对象池和大整数对象池

    小整数对象池 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间. Python 对小整数的定义是 [-5, 256] 这些整数对象是提前建立 ...

  9. Python中小整数对象池和大整数对象池

    1.小整数对象池 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间. Python 对小整数的定义是 [-5, 256] 这些整数对象是提前 ...

最新文章

  1. linux 查看网络连接数
  2. 007_SpEL表达式
  3. python登录网站后爬取数据_用 Python 登录主流网站,我们的数据爬取少不了它
  4. 案例 | 用pdpipe搭建pandas数据分析流水线
  5. java进程被kill_定位JAVA进程被kill的原因
  6. 网络流题目详讲+题单(提高版)(持续更新中......)
  7. 快速运行python虚拟环境_快速入门Python 最新最流行的pipenv虚拟环境
  8. Atitit.每周计划日程表 流程表v3
  9. 开发问题---数据库字段前出现“—”(保存留用,仅供参考)
  10. (转载)java中super的两种用法
  11. 算法学习总结(3)——二叉树数据结构重点知识总结
  12. clipboardjs 基本使用方式之一
  13. HBuilder原生功能概述
  14. PHP正则怎样词语过滤,如何用正则替换敏感词?敏感词过滤? - SegmentFault
  15. OSS对象存储是什么?
  16. 大数据在职研究生哪个好_在职研究生大数据专业怎么样?
  17. 从单体式架构迁移到微服务架构,简述java程序的运行原理
  18. java合并word文档和添加分节符
  19. Java中浏览量怎么实现_Java刷视频浏览量点赞量的实现代码
  20. ubuntu下解决微信不能发送图片的问题

热门文章

  1. 中继器、集线器、网桥、交换机、路由器、网关的总结
  2. 新国都智能POS N5通过极度严苛测试,优异性能脱颖而出
  3. linux系统中设置acl的命令,Linux的ACL配置
  4. MySQL-08-MVCC
  5. tomcat java home配置_Tomcat 简介、环境配置
  6. MongoDB 实验——数据备份和恢复和数据库优化
  7. mac 修改文件的读书权限
  8. 小米折叠手机售价、发布时间曝光
  9. VMware与USB3.0不解情缘(此文献给win7系统只有usb3.0口死活与虚拟机连不上的朋友们)
  10. Github上开源仿京东商城项目-安装部署(二)