/algorithm-analysis

算法分析的课程项目

Primary LanguagePython

algorithm-analysis

算法分析的课程项目

项目内容:对排序算法经行时间和空间复杂度的分析

需求包括
  • 实现现有的所有排序算法 ,界面上应该可以多选相应的算法执行。
  • 分别排序算法在 1 - n (n > 10000)级别的数据上运行
  • 数据可以是逆序,顺序,乱序的,这个在界面上可以选择
  • 保存各个算法运行时的对应的时间和空间信息
  • 对时间和空间信息绘制折线图。 这个在界面上应该有个分页来绘制
  • 对得到的 n 规模和所用的时间空间,应用回归分析等判断算法属于那种复杂程度。
  • 有界面显示折线图,分析结果
大概需要的内容包括
  • dataset.py : 直接生成乱序,顺序,逆序数组
  • sort_algorithm.py : 各个排序算法在这个文件下面,统一接收 list 输出 list.
  • statistic.py : 用作统计数据,包括算法的各个时间和空间数据,
  • drawing.py : 根据统计数据,输出各种图表。
  • main.py : 界面相关,函数的主入口。
使用技术路线
  • python + matplotlib(绘制折线图) + Tkinter(界面显示用)
具体需求和组织方式,大家请一起商定,具体的代码实现方式用什么样的组织形式还需要大家一起讨论。我只是抛砖引玉。
2020年4月25日
  • 目前确定的对算法分析的指,主要有时间和空间两个,能否提出一些其他可以量化的指标,来评价算法。
  • TODO 1: 实现获取程序运行的所使用的空间信息。保存方式和时间复杂的一样.可以绘制成折线图。
  • TODO 2: 使用Tkinter 完成基本的界面,关键是能将生成的 matplot 的图像嵌入到界面中 ,界面上应该有
    • 多选框:选择算法
    • 分页面:分别显示时间和空间曲线
    • 程序分析界面,分数时间和空间所属于的复杂度
    • 进度条,程序肯定会运行比较长的时间,进度条是有必要的。
  • TODO 3: 根据算法得到的 n 与 时间空间关系,回归分析所属于复杂度。在界面上可以显示
  • TODO 将被发布在 github 上的project 页面。(体验一下它的功能),如果有大家谁有时间去实现,可以将其从 TODO note 中拖入到 in progress note 中,并且在后面编辑上自己的名字。完成之后拖入 Done note中
  • 新的需求,可以在讨论之后,加入到TODO 中,上面的三个 TODO 是大致我想到的主要功能,如果觉得一个做工作量比较大,可以被细分,请新建 inprogress note ,在Title 后面加上 :: 表示子任务。避免重复工作。