本次实验的难点有二,一是在于排序算法的使用,二是在于如何给排序后的成绩找到与其对应的同学。
首先是排序算法的选择,在一开始我使用的是冒泡排序法,这种方法简单易实现,但是其效率过低于是我查阅资料,其他的一些算法,例如选择排序,插入排序与希尔排序。最终我选择了效率较高、稳定性好的插入排序作为排序算法,排序的结果非常好。
其次是给排序后的成绩找到他对应的人物,在一开始我选择用一个通用函数使用不同的参数代表要排序的课程,减少了我的工作量。我使用了一个名为CJ[100][3]的二维数组来存储他们的成绩,他的每一列存储的分别是A、B、C三门课程的成绩,这样我就可以改变列参数来选择排序的课程。在排序算法中,我利用一个数组来copy了他们的名字,每次调用函数时副本都会将名字原来的顺序重新复制一遍,这样就可以做到对每一个课程排序都能找到对应名字的情况。
以上是我使用数组来存储他们的成绩并达到排序的目的,效果非常不错,但是代码很多很多,各种参数眼花缭乱,都程序的时候容易记不清他的工作逻辑,于是我采用了另一种方法来实现实验要求,即本实验的高级要求。
高级要求:
思路:在这里我创建了一个student类,这个类里面主要变量为名字的存储数组,科目A、B、C的成绩存储变量以及其他的一些调用变量的函数,我使用他生成了一个student的对象数组,,在主函数中规定要输入成绩的人数,对其一一进行数据录入排序操作,数组中每一个用到的成员就相当于一名学生,各自拥有各自的成绩,减少了成绩等数据的耦合度,个体化程度高,读起程序来也一目了然。