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