三种大数相乘算法
发表于
更新于
阅读次数:
在研究Java的BigInteger乘法操作的源码时,在JDK的实现里看到了三种算法,调用multiply会根据两个乘数的大小进入不同的算法进行进一步的计算,他们分别是:
- 小学生算法(Grade-School Algorithm)
- Karatsuba算法(Karatsuba Algorithm | Brilliant Math & Science Wiki)
- Toom Cook-3算法
下面分别讲解各个算法,前面两种算法是比较好理解和实现的,而最后一种算法是比较复杂的。当然,本篇文章重点讲解三种算法的原理,实现部分参考JDK源码(BigInteger.java)即可。根据我的计划,之后的会有自己实现大数乘法的文章(也许会直接在此篇文章上增添)。
Java大数源码剖析(四) - 1.位运算
发表于
更新于
阅读次数:
Java大数源码剖析(二) - BigInteger的加减操作
发表于
更新于
阅读次数:
Java大数源码剖析(一) - BigInteger的底层数据结构
发表于
更新于
阅读次数:
Java大数源码剖析(一) - BigInteger的底层数据结构
本系列文章对Java大数类源码进行剖析, Java大数类包括java.math.BigInteger和java.math.BigDecimal, 本人使用的JDK版本为13.0.2
本系列文章按照以下顺序 :
- BigInteger的介绍和底层数据结构 (一篇文章)
- 依次剖析BigInteger各个常用方法的源码实现(从简到难) (若干篇文章)
- 讲解BigDecimal的的介绍和底层数据结构 (一篇文章)
- 依次剖析BigInteger各个常用方法的源码实现(从简到难) (若干篇文章)
- 后续(文章)计划 : 利用C++实现自己的BigNumber库, 这是我剖析java大数类的最终目的,最终会形成一套处理大整数的C++开源库PGBigNumber
BigInteger介绍
8086AssemblyNote
发表于
更新于
阅读次数:
算法刷题笔记 - 二维数组中的查找
发表于
更新于
阅读次数:
二维数组中的查找
- 来源 : LeetCode - 剑指 Offer 04. 二维数组中的查找
- 难度 : 中等
- 标签 : 二叉搜索树(BST), 二分查找(BS)
题目描述
- 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
示例 :
算法刷题笔记 - 正则表达式的匹配
发表于
更新于
阅读次数: