当前位置: 首页 > news >正文

HJ68 成绩排序

描述

给定一些同学的信息(名字,成绩)序列,请你将他们的信息按照成绩从高到低或从低到高的排列,相同成绩 

都按先录入排列在前的规则处理。 

例示:
jack      70
peter     96
Tom       70
smith     67 

从高到低  成绩 
peter     96 
jack      70 
Tom       70 
smith     67 

从低到高 

smith     67 

jack      70 

Tom       70 

peter     96 

注:0代表从高到低,1代表从低到高 

数据范围:人数:1≤n≤200 1≤n≤200 

进阶:时间复杂度:O(nlogn) O(nlogn) ,空间复杂度:O(n) O(n) 

输入描述:

第一行输入要排序的人的个数n,第二行输入一个整数表示排序的方式,之后n行分别输入他们的名字和成绩,以一个空格隔开

输出描述:

按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开

示例1

输入:

3
0
fang 90
yang 50
ning 70

复制输出:

fang 90
ning 70
yang 50

复制

示例2

输入:

3
1
fang 90
yang 50
ning 70

复制输出:

yang 50
ning 70
fang 90
#include <iostream>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;//选出最小
void  selectSort(vector<string> A, int n, vector<string> name) {for (int i = 1; i <= n; i++) {int k = i;for (int j = i; j <= n; j++) {if (A[j] < A[k]) {k = j;}}string temp = A[i];string tempName = name[i];A[i] = A[k];name[i] = name[k];A[k] = temp;name[k] = tempName;}
}
//  选出最大
void selectSort2(vector<string> A, int n, vector<string> name) {for (int i = 1; i <= n; i++) {int k = i;for (int j = i; j <= n; j++) {if (A[j] > A[k]) {k = j;}}string temp = A[i];string tempName = name[i];A[i] = A[k];name[i] = name[k];A[k] = temp;name[k] = tempName;}
}int main() {int n;int method;string name;string score;vector<string> scores;vector<string> namearry;vector<vector<string> > group;while (cin >> n >> method) {for (int i = 0; i < n; i++) {cin >> name;scores.push_back(name);cin >> score;scores.push_back(score);group.push_back(scores);}if (method == 0) {//降序scores.clear();for (int i = 0; i < group.size(); i++) {namearry[i] = group[i][1];scores[i] = group[i][0];}selectSort(scores, group.size(), namearry);for (int j = 0; j < group.size(); j++) {cout << namearry[j] << " " << scores[j] << endl;}} else if (method == 1) {//升序scores.clear();namearry.clear();for (int i = 0; i < group.size(); i++) {namearry[i] = group[i][1];scores[i] = group[i][0];}selectSort2(scores, group.size(), namearry);for (int j = 0; j < group.size(); j++) {cout << namearry[j] << " " << scores[j] << endl;}}}return 0;
}
// 64 位输出请用 printf("%lld")

http://www.lryc.cn/news/174193.html

相关文章:

  • FPGA——UART串口通信
  • 华为云Stack的学习(七)
  • 安装k8s集群
  • C++中编写没有参数和返回值的函数
  • SWC 流程
  • 怒刷LeetCode的第10天(Java版)
  • java框架-Springboot3-场景整合
  • 在Bat To Exe Converter,修改为当异常结束或终止时,程序重新启动执行
  • PythonWeb服务器(HTTP协议)
  • Northstar 量化平台
  • c语言进阶部分详解(经典回调函数qsort()详解及模拟实现)
  • win下 lvgl模拟器codeblocks配置
  • Quartus出租车计价器VHDL计费器
  • 浅谈单元测试:测试和自动化中的利用
  • 深度详解Java序列化
  • Linux下的网络编程——B/S模型HTTP(四)
  • Go语言入门篇
  • 基于springboot+vue的青年公寓服务平台
  • Spring-ImportSelector接口功能介绍
  • YOLOv5如何训练自己的数据集
  • 李航老师《统计学习方法》第1章阅读笔记
  • 基于微信小程序的背单词学习激励系统设计与实现(源码+lw+部署文档+讲解等)
  • VScode调试复杂C/C++项目
  • 【Hash表】字母异位词分组-力扣 49 题
  • 展示日志log4.properties
  • 基于PLE结合卡尔曼滤波的RSSI定位算法matlab仿真
  • uniapp项目实践总结(十九)版本更新和热更新实现方法
  • 一起学数据结构(8)——二叉树中堆的代码实现
  • Linux环境变量配置说明(配置jdk为例-摘录自尚硅谷技术文档)
  • idea常用插件笔记