python是做统计数据的好工具,在学习程序设计时,我们发现算法是一个难点,我们从’简单模拟’, ‘查找元素’, ‘图形输出’, ‘进制转换’, ‘字符串处理’,‘排序’,‘散列’,‘贪心’,‘二分’,‘two pointers’,‘其他’,‘数学’,‘链表’,几个角度分析算法的考试和训练策略,下一篇文章,分析数据结构的算法的考试和训练策略,如果你正在准备PAT甲乙级算法的考试和训练,会大有帮助,祝早日金榜题名。
首先用python输入matplotlib和numpy:
import matplotlib.pyplot as plt
import numpy as np
然后解决 plt 中文显示的问题:
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
我们命名alg为算法名,yiji是乙级的数据列表,jiaji是甲级的数据列表
alg = ('简单模拟', '查找元素', '图形输出', '进制转换', '字符串处理','排序','散列','贪心','二分','two pointers','其他','数学','链表')
yiji = [9,4,2,2,8,1,8,2,1,2,2,8,1]
jiaji = [5,3,1,3,7,10,5,5,4,4,2,12,4]
生成乙级的调查结果:
plt.bar(alg, yiji)
plt.title('乙级算法的调查结果')
plt.show()
``
![在这里插入图片描述](https://img-blog.csdnimg.cn/569852cf509844d880ae2803992492b7.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAa2FuZ2Rlc2FucGlwYW4=,size_20,color_FFFFFF,t_70,g_se,x_16)
`
我们发现看小图时,汉字挤到了一起去,需要美工设计,变成横向条形图![在这里插入图片描述](https://img-blog.csdnimg.cn/8acd342586d64119ac354a8a7f59b0d7.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAa2FuZ2Rlc2FucGlwYW4=,size_15,color_FFFFFF,t_70,g_se,x_16)
在绘制甲级图时,从新设计:
```python
plt.barh(alg, jiaji)
plt.title('甲级算法的调查结果')
plt.show()
``
![在这里插入图片描述](https://img-blog.csdnimg.cn/dfc36c3d1c514c7a98ba4adc4fc79413.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAa2FuZ2Rlc2FucGlwYW4=,size_15,color_FFFFFF,t_70,g_se,x_16)
`
把两个图合并
```python
bar_width = 0.3 # 条形宽度
index_male = np.arange(len(alg)) # 乙级条形图的横坐标
index_female = index_male + bar_width # 甲级条形图的横坐标
# 使用两次 bar 函数画出两组条形图
plt.bar(index_male, height=yiji, width=bar_width, color='b', label='乙级')
plt.bar(index_female, height=jiaji, width=bar_width, color='g', label='甲级')
plt.legend() # 显示图例
plt.xticks(index_male + bar_width/2, alg) # 让横坐标轴刻度显示 alg , index_male + bar_width/2 为横坐标轴刻度的位置
plt.ylabel('题目规模') # 纵坐标轴标题
plt.title('算法的调查结果') # 图形标题
plt.show()
我们可以得出结论,乙级的训练重点在于算法和散列,甲级的训练重点在于数学和排序,下期做数据结构的考试和训练策略,喜欢的话就点赞关注一下吧。