周末花了10小时把最长非递减子序列算法速度提高了几十亿倍
  pWWBp7P8kGbo 2023年12月06日 51 0


推荐教材:董付国著,《Python数据分析与数据可视化(微课版)》,ISBN:978-7-302-62420-2,清华大学出版社,2023年6月出版,2023年8月第2次印刷

配套资源:教学大纲、课件、源码、数据文件、34小时微课

  • 《Python数据分析与数据可视化》教材插图彩图
  • 《Python数据分析与数据可视化》教学大纲

周末花了10小时把最长非递减子序列算法速度提高了几十亿倍_数据挖掘

========================

问题描述:

给定包含若干整数的任意列表,查找其中的最长非递减子序列。例如,[7, 1, 2, 5, 3, 4, 0, 6, 2]的最长非递减子序列为[1, 2, 3, 4, 6]。

参考代码:

周末花了10小时把最长非递减子序列算法速度提高了几十亿倍_发送消息_02

运行结果如下,从长度35的列表中查找长度为10的最长非递减子序列时,最笨的暴力穷举算法用时18751秒,后面几个算法从不同的角度进行改进和优化,最后一种算法瞬间解决问题,算法至少有千万倍的速度提升。

周末花了10小时把最长非递减子序列算法速度提高了几十亿倍_数据挖掘_03

为了进一步测试改进算法的效率,把原始数据改为长度1350的随机列表,专门测试func6(),把测试代码修改为

周末花了10小时把最长非递减子序列算法速度提高了几十亿倍_数据分析_04

运行结果如下,这样的问题规模前面几个函数尤其是前两个函数的运行时间之长恐怕是超出想象的,但func6()仍能在0.3秒钟给出结果。

周末花了10小时把最长非递减子序列算法速度提高了几十亿倍_Python_05

继续修改测试代码,把测试数据改为长度3000的随机列表,重新运行程序,

周末花了10小时把最长非递减子序列算法速度提高了几十亿倍_信息可视化_06

运行结果:

周末花了10小时把最长非递减子序列算法速度提高了几十亿倍_Python_07

=================

温馨提示:

公众号“Python小屋”

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月06日 0

暂无评论

推荐阅读
  2Fnpj8K6xSCR   2024年05月17日   99   0   0 Python
  xKQN3Agd2ZMK   2024年05月17日   69   0   0 Python
  fwjWaDlWXE4h   2024年05月17日   38   0   0 Python
  Ugrw6b9GgRUv   2024年05月17日   39   0   0 Python
  YpHJ7ITmccOD   2024年05月17日   39   0   0 Python
pWWBp7P8kGbo