【掌握这些数学函数,你会在算法效率的分析时经常用到】运行结果如图 4.2 所示 。

文章插图
图 2 告诉我们,该问题规模是 1 的时候,所有算法都同样有效,问题规模越大,不同复杂度的算法运行效率相差得越大 。
2^N 增长得太过迅猛,作为一个另类单独列出 。
▼ 代码 3 2^N 的增长
01 for N in range(10, 110, 10):02 print('2**{0} = {1}'.format(N, 2 ** N))运行结果如图 3 所示 。
文章插图
▲ 图 4.3 2^N 的增长
这些运行结果告诉我们,有些时候,选择正确的算法是解决问题的唯一途径 。对于函数的输出结果来说,如果把 100 看作 1 秒,那么 10000 就是 100 秒,超过 1 分半 。这意味着对于一个规模是 1000000 的问题来说,一个是 lg?N 复杂度的算法可以立刻得出结果,√N 复杂度的算法耗时约 10 秒,N 复杂度的算法耗时将超过 2.7 小时,N^3 复杂度则需要 3 万多年!也许我们可以忍受一运行 10 秒或 2.7 小时的程序,但一定没法容忍有生之年看不到结果的程序 。
推荐阅读
- 宝宝护理|黑坑鲤鱼正钓,节奏掌控的5个要诀,掌握之后,坑冠信手拈来
- 不懂这些名词,懂茶的般在哪买茶叶
- 翡翠|翡翠原石十宝九有裂,但这些“绺裂”不能碰!
- 实践微服务六年,我获得了这些心得体会
- IT工程师都需要掌握的容器技术之Docker存储管理
- 监控如何直播?这些品牌摄像机Rtsp取流格式必须知道
- 做数据分析应该掌握的5个SQL数据清洗方法
- Java开发人员必知的常用类库,这些你都知道吗?
- 电动汽车|脑门一热买了电车:后悔没知道这些问题
- SSD究竟要不要碎片整理?或许这些“常识”就是误区,你知道吗
