【发布时间】:2012-07-07 22:14:47
【问题描述】:
可能重复:
What data-structure should I use to create my own “BigInteger” class?
出于纯粹的兴趣,我正在尝试设计一种可以容纳 任意大 整数的类型。我想支持四种基本操作[+, -, *, /] 并优化这些操作的速度。
我在考虑某种双向链表和一个位标志来指示正值或负值。但我不太确定如何添加,例如,添加到大量不同尺寸。我是否应该走到两个数字的最后一个元素,然后返回(使用 second 反向指针指向前一个元素)。
123456789 //一个大数 + 123 //另一个不同大小的大数如果我可以拥有任意大的内存,那么这个任务的最佳数据结构是什么?
我将不胜感激有关算术运算的最坏情况复杂性的小提示和任何 cmet。谢谢!
【问题讨论】:
-
你的意思是像 Java 中的 BigInteger 或 BigDecimal?
-
如果你正在使用 c(或 c++,或者只是好奇),那么这本书 c 接口和实现会开发一个这样的库 - amazon.com/…
-
google.de/search?q=java+bigint 。第一个链接说:“不可变的任意精度整数”。
-
我不明白为什么有人会为此使用链表
-
澄清一下 - 您是指任意大数(没有上限的数)还是无限大数(如集合论)?
标签: algorithm data-structures big-o largenumber