两种数列求积算法的分析比较[作业]

对比以下两种数列求积算法,说明并验证它们的效率。
第一个算法逐个元素相乘;第二个算法使用递归,把元素分成两组分别进行相乘。除了理论分析,最好有实验数据。

# Input: Given a sequence of number X
# Output: The product of all the numbers in X
def product1(X):
    res = 1
    for i in range(len(X)):
        res *= X[i]
    return res
# Input: Given a sequence of number X
# Output: The product of all the numbers in X
 def product2(X):
       if len(X) == 0: return 1
       if len(X) == 1: return X[0]
       if len(X) == 2: return X[0]*X[1]
       l = len(X)
       return product2(X[0:(l+1)//2]) * product2(X[(l+1)//2: l])

解答

  1. 这是一位大一新生的解答,除了军训他还没有经过大学学习。值得表扬。

  2. 这是一位高二有NOIP经历的学生解答。这是一种耐人寻味的解答。

两种方法的渐进复杂度都是O(n) 。正常乘法的话直接for循环快。因为分治的话感觉常数会大一点。高精度乘法的话分治快,因为时间复杂度会更优秀一点。

  1. 这是所谓高手的解答,而是据说是世界闻名的密码学大家。我给一个差评!!!

This is much faster than multiplying sequentially first times second times third etc., for essentially the same reason that merge sort is much faster than insertion sort.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 当夜色降临 我站在台阶上倾听 星星蜂拥在花丛里 而我站在黑暗中 听,一颗星星落地作响 你别赤脚在这草地上散步 我的...
    小虹口袋里有糖阅读 124评论 0 0
  • 传说中的页脚经典布局,效果图如下,当内容多时会跟随内容移动 写法,容器分两块,一块是detail-wrapper,...
    简单coder阅读 151评论 0 0
  • 一般人看了《老混蛋》这部电影,大概都能感到灰色、晦暗、温吞的不舒服感觉,我也能感觉到。我还感觉到一点,就是老兽的困...
    勒尤阅读 328评论 0 1
  • 昨晚(也或者说今日凌晨)做了一个奇怪的梦。感觉梦境中好像是赵栋在上大学期间,该开学了,但是怎么也联系不上她。我怕...
    盼望_c5ec阅读 289评论 0 0
  • 那时风正紧 烟雨过江楼 独望寒山 花田催泪下 枯风树折枝 茫茫望江天 一色空蒙 斜过燕影 一逝而然
    衿霂阅读 254评论 0 0