排序的编程与实现
来源:互联网 发布:淘宝债权转让车 经历 编辑:程序博客网 时间:2024/06/07 15:51
实验目的:掌握常用的排序方法,并掌握 C 语言实现排序算法的方法;了解各种排序方法过程及依据原则,并掌握各种排序方法的时间复杂度和稳定性的分析方法。
实验原理:参照课本 p.220, Figure7.2;p.223,Figure7.4;p.228,Figure7.8;p.232-233, Figure7.9-7.10; p240-243, Figure 7.12-7.15.
实验内容:统计成绩
【问题描述】:给出 n 个学生的考试成绩表,每条信息由姓名和分数组成,利用排序算法完成以下任务:
1.按照分数高低次序,打印出每个学生在考试中获得的名次,分数相同的为同一名次。2.按照名次列出每个学生的姓名和分数
【要求】学生的考试成绩需要从键盘输入数据建立,同时要设计输出格式。
实验要求:
能够采用常用的排序算法中的一种实现以上两个任务;
相关代码: main.cpp
#include <iostream>#include <string>#include <vector>using std::string;using std::cin;using std::cout;using std::endl;using std::vector;typedef struct Student stu;struct Student{ string name; int score; int rank;};void input(vector<stu> *list, int a){ int i; for (i = 0; i<a; i++) { stu tmp; cin >> tmp.name >> tmp.score; tmp.rank = 1; (*list).push_back(tmp); }}void sort(vector<stu> *list, int a){ int x, y; stu tmp; for (x = 0; x<a; x++) { for (y = 0; x + y<a - 1; y++) { if ((*list)[y].score < (*list)[y + 1].score) { stu tmp = (*list)[y]; (*list)[y] = (*list)[y + 1]; (*list)[y + 1] = tmp; } } }}void output(vector<stu> list, int a){ int i; for (i = 0; i<a; i++) { cout << "name:" << list[i].name << " score:" << list[i].score << " rank:" << list[i].rank << endl; }}void rank(vector<stu> *list, int a){ int i; for (i = 0; i<a; i++) { (*list)[i].rank = i + 1; if (i != 0 && (*list)[i].score == (*list)[i - 1].score) { (*list)[i].rank = i; } }}int main(){ int a; cout << "输入学生数量." << endl; cin >> a; vector<stu> list; cout << "输入名字和分数:" << endl; input(&list, a); sort(&list, a); rank(&list, a); cout << "排序后:\n" << endl; output(list, a); while (1); return 0;}
实验结果
实验环境
vs2015
0 0
- 排序的编程与实现
- 编程实现单链表的排序
- 编程实现单链表的排序
- 编程实现单链表的排序
- 插入排序伪代码与编程实现
- 快速排序与堆排序的实现
- [windows编程]CListCtrl的排序算法实现
- 排序算法(2)插入排序的编程语言实现
- 模板与泛型编程之实现(归并排序)
- 【算法学习】线性时间排序-计数排序、基数排序和桶排序详解与编程实现
- 【算法学习】线性时间排序-计数排序、基数排序和桶排序详解与编程实现
- 编程实现选择排序
- 编程实现快速排序
- 编程实现归并排序
- 编程实现插入排序
- 编程实现冒泡排序
- Shell排序的原理与集体实现
- Shell排序的原理与集体实现
- 稀疏矩阵三元组求转置
- hdu 2044 一只小蜜蜂 题解
- CNN MODEL 总结
- GCDOnce
- HTML——入门介绍
- 排序的编程与实现
- 湖南省首届逻辑推理大赛(中南大学)
- DDL、DML
- Mybatis中一对一映射详解
- VMware centOS 安装VMware Tools
- Faster RCNN解析
- 大端 小端
- Mybatis中一对多映射详解
- 扎实java基础