实验目的
- 深刻理解各种排序算法的设计思想;
- 掌握各种排序算法的执行过程;
- 掌握各种排序算法的设计实现
实验内容
一个班有n个学生,每个学生有学号(no)、姓名(name)、年龄(age)、成绩(score)。
- 定义数据结构来描述学生信息。
2.按成绩进行降序排列(自选两种排序算法)。
3.输出每一趟排序的过程。
4.输出已排序的学生数据;要求输出整齐。
分析
刚开始想用模板类的方法实现一个排序算法,只要给定存放对象的容器和比较对象的方法,就可以对存放任意对象容器进行排序,但是后来发现这样的做法远比想象中要复杂,最后用最简单的方法实现。构造一个学生类,
一个班级类,将排序的方法写到班级类里面,在学生类中通过运算符重载来定义比较不同学生信息的依据。实现了可以通过运算符比较两个学生对象,排序算法中就可以对他们作大小比较了,实现时代码只需小改,与普通的整数排序代码几乎一致。
本代码选择了一个快速排序算法和选择排序算法,每一趟排序输出学生数组的成绩排列变化.
MyCode
1.#include<iostream>
2.#include<stdio.h>
3.#include<string.h>
4.#include<string>
5.#include<vector>
6.#include<algorithm>
7.using namespace std;
8.
9.class Student{
10. string name;
11. string id;
12. int age;
13. int score;
14. string space(string t){
//帮助格式化输出
15. string n = " ";
16. t += n.substr(0, 15 - t.length());
17. return t;
18. }
19.public:
20. int get_score(){
return score; }
21. void getdata(){
22. cout << "Please input: name, id, age, score > ";
23. cin >> name >> id >> age >> score;
24. }
25. void printf(){
26. cout << "name:" << space(name