数据结构实验4:排序

本次实验旨在深入理解排序算法,通过设计实现快速排序和选择排序,对学生信息(包括学号、姓名、年龄、成绩)按成绩降序排列。实验中,每趟排序过程都会被记录并展示排序后的学生数据,代码清晰地展示了如何在学生类和班级类中实现这些功能。

实验目的

  1. 深刻理解各种排序算法的设计思想;
  2. 掌握各种排序算法的执行过程;
  3. 掌握各种排序算法的设计实现

实验内容
一个班有n个学生,每个学生有学号(no)、姓名(name)、年龄(age)、成绩(score)。

  1. 定义数据结构来描述学生信息。
    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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值