排序问题上机考试刷题

排序与查找可以说是计算机领域最经典的问题,排序和查找问题在考研机试真题中经常出现。排序考点在历年机试考点中分布广泛。排序既是考生必须掌握的基本算法,又是考生

学习其他大部分算法的前提和基础。首先学习对基本类型的排序。对基本类型排序,是指对诸如整数、浮点数等计算机编程语言内置的基本类型进行排序的过程。

例题1:

排序_牛客题霸_牛客网 对输入的n个数进行排序并输出。。题目来自【牛客题霸】icon-default.png?t=N7T8http://t.cn/E9dLx5K

解析:

#include<iostream>
#include<algorithm>
using namespace std;int main()
{int n;int arr[100] = { 0 };cin >> n;for (int i = 0; i < n; i++){cin >> arr[i];}sort(arr, arr + n);for (int i = 0; i < n; i++){cout << arr[i] << " ";}cout << endl;return 0;
}

下面介绍一个非常重要的库函数sort

先来看看怎么使用,头文件需要带上#include<algorithm>

注意,sort的前两个参数是左闭右开的

sort函数默认是升序排列

如果需要设计降序或者自定义排序,那么需要设计一下comp函数返回值是bool类型

设计comp函数的原则:不发生交换的条件下返回真(true),否则返回false

关键是去寻找所有不发生交换的情况,左参数为lhs,右参数为rhs,参数的类型要取决于排序的数据类型而定。

下面通过几道例题来感受一下comp函数的设计:
整数奇偶排序_牛客题霸_牛客网输入10个整数,彼此以空格分隔。重新排序以后输出(也按空格分隔),要求: 1.先输出其中的。题目来自【牛客题霸】icon-default.png?t=N7T8http://t.cn/E9glPvp思路:

分析什么情况下数据不发生交换

代码解析:

#include<algorithm>
#include<iostream>
using namespace std;bool comp(int lhs, int rhs)
{if (lhs % 2 != 0 && rhs % 2 == 0){return true;}else if (lhs % 2 != 0 && rhs % 2 != 0 && lhs > rhs){return true;}else if (lhs % 2 == 0 && rhs % 2 == 0 && lhs < rhs){return true;}else{return false;}
}
int main()
{int arr[10] = { 0 };for (int i = 0; i < 10; i++){cin >> arr[i];}sort(arr, arr + 10, comp);for (int i = 0; i < 10; i++){cout << arr[i] << " ";}cout << endl;return 0;
}

成绩排序_牛客题霸_牛客网用一维数组存储学号和成绩,然后,按成绩排序输出。。题目来自【牛客题霸】icon-default.png?t=N7T8http://t.cn/E9d3ysv

代码解析:

#include<iostream>
#include<algorithm>
using namespace std;struct Student
{int grade;//成绩int id;//学号
};
bool comp(Student lhs, Student rhs)
{if (lhs.grade < rhs.grade){return true;}else if (lhs.grade == rhs.grade && lhs.id < rhs.id){return true;}else{return false;}
}
int main()
{Student arr[100];//定义一个student类型的数组int n;cin >> n;for (int i = 0; i < n; i++){cin >> arr[i].id >> arr[i].grade;//先输入学号,再输入成绩}sort(arr, arr + n, comp);for (int i = 0; i < n; i++){cout << arr[i].id << " " << arr[i].grade;cout << endl;}return 0;
}

成绩排序_牛客题霸_牛客网查找和排序 题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,。题目来自【牛客题霸】icon-default.png?t=N7T8http://t.cn/E9gyHM1

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;struct Student
{string name;//姓名int grade;//成绩int num;//录入顺序
};
bool comp1(Student lhs, Student rhs)
{//降序排列if (lhs.grade > rhs.grade){return true;}else if (lhs.grade == rhs.grade && lhs.num < rhs.num){return true;}else{return false;}
}
bool comp2(Student lhs, Student rhs)
{//升序排列if (lhs.grade < rhs.grade){return true;}else if (lhs.grade == rhs.grade && lhs.num < rhs.num){return true;}else{return false;}
}
int main()
{Student arr[10000];int n;while (cin >> n){int way;//判断输入的是0还是1cin >> way;for (int i = 0; i < n; i++){cin >> arr[i].name >> arr[i].grade;arr[i].num = i + 1;//表示为第几个录入的}if (way == 0){//表示成绩降序sort(arr, arr + n, comp1);}else{//表示成绩升序sort(arr, arr + n, comp2);}for (int i = 0; i < n; i++){cout << arr[i].name << " " << arr[i].grade;cout << endl;}}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/434868.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【阿里云服务器数据迁移】 同一个账号 不同区域服务器

前言 假如说一台云服务器要过期了,现在新买了一台,有的人会烦恼又要将重新在新的服务器上装环境,部署上线旧服务器上的网站项目, 但是不必烦恼,本文将介绍如何快速将就旧的服务器上的数据迁移到新的服务器上. 包括所有的环境和网站项目噢 ! 步骤 (1) 创建旧服务器自定义镜像…

STM32 PWM驱动设计

单片机学习&#xff01; 目录 文章目录 前言 一、PWM驱动配置步骤 二、代码示例及注意事项 2.1 RCC开启时钟 2.2 配置时基单元 2.3 配置输出比较单元 2.4 配置GPIO 2.5 运行控制 三、PWM周期和占空比计算 总结 前言 PWM本质是利用面积等效原理来改变波形的有效值。 一、PWM驱动…

探索IOC和DI:解密Spring框架中的依赖注入魔法

IOC与DI的详细解析 IOC详解1 bean的声明2 组件扫描 DI详解 IOC详解 1 bean的声明 IOC控制反转&#xff0c;就是将对象的控制权交给Spring的IOC容器&#xff0c;由IOC容器创建及管理对象。IOC容器创建的对象称为bean对象。 要把某个对象交给IOC容器管理&#xff0c;需要在类上…

春运挑战:网络购票平台需引入分账系统提高交易效率

随着春运的来临&#xff0c;网络购票平台面临了巨大的挑战。旅游平台的车票、机票、酒店等订单激增&#xff0c;给平台的交易承载力带来了巨大压力。为了应对这一挑战&#xff0c;网络购票平台需要提前引入分账系统&#xff0c;以提高整体的交易效率。 春运背景与挑战 春运是中…

手把手教你搓一个最小系统板【画PCB-->布线 -->制版-->焊接】

文章目录 一、基础电路1. 晶振电路2. 稳压电路3. 复位/按键电路4. BOOT电路5. SWD接口6. 滤波电容7. LED电路8. 拓展引脚设计总览 二、布局布线三、制版四、焊接 在大学嵌入式相关专业&#xff0c;有许多同学是更偏向软件上的设计&#xff0c;并不懂硬件上的实现&#xff0c;而…

ANSYS 2023 下载安装教程,附安装包和工具,轻松安装,无套路

前言 ANSYS是一款融结构、流体、电场、磁场、声场分析于一体的大型通用有限元分析(FEA)软件&#xff0c;能与多数计算机辅助设计软件接口&#xff0c;实现数据的共享和交换&#xff0c;如Creo,NASTRAN、Algor、IDEAS、AutoCAD等. 准备工作 1、Win10及以上系统 2、提前准备好…

java自动化将用例和截图一起执行测试放入world中直接生成测试报告【搬代码】

1.首先我们得用例写好之后放入文档中&#xff0c;把不用的案例类型、前置条件去掉之后&#xff0c;如图&#xff1a; 放到桌面后&#xff0c;先看执行结果&#xff1a; 首先&#xff0c;我们先创建一个时间&#xff0c;这个时间主要是给图片创建名称&#xff0c;并且要在插入…

Linux服务器配置与管理(第二次实验)

实验目的及具体要求 目的 1.掌握基于命令行的文件操作 2.掌握基于命令行的目录操作 3.掌握用户账户的命令行操作 4.掌握组账户的命令行操作 5.熟悉磁盘分区操作 6.掌握调整优先级的方法 具体要求 1.掌握基于命令行的文件和目录操作 ①创建测试目录 ②创建文件 ③复…

肌无力的判断方法有什么?

肌无力可能发病在身体的多个部位&#xff0c;最为显著的就是眼睑肌无力&#xff0c;那么除了这种明眼就可以看见的&#xff0c;那些不明显的又该怎么判断呢?看了你就知道了。 因为肌无力是一种比较常见的疾病,所以我们要了解全身肌肉无力的症状&#xff0c;下面为大家介绍肌无…

攻防演练 |解决Nmap无法扫描B段资产问题

前段时间老大发来任务&#xff0c;让帮忙用nmap扫一些ip段&#xff0c;我拿过来就准备开扫… 但是发现nmap无法直接扫描同一B段不同C段下的IP段&#xff0c;例如111.111.111.0-111.111.222.255 原本我是准备写个工具联动nmap来扫描大批量IP段资产的 但是由于环境有些问题&am…

2024 高级前端面试题之 JS 「精选篇」

该内容主要整理关于 JS 的相关面试题&#xff0c;其他内容面试题请移步至 「最新最全的前端面试题集锦」 查看。 JS模块精选篇 1. 数据类型基础1.1 JS内置类型1.2 null和undefined区别1.3 null是对象吗&#xff1f;为什么&#xff1f;1.4 1.toString()为什么可以调用&#xff1…

04. OSPF

文章目录 一. 初识OSPF1.1. OSPF概述1.2. OSPF特性1.3. OSPF的专业术语1.4. OSPF维护的3张表1.5. OSPF报文类型1.6. OSPF的邻居状态 二. 实验题2.1. 实验1&#xff1a;点到点链路上的OSPF2.1.1. 实验目的2.1.2. 实验拓扑图2.1.3. 实验步骤&#xff08;1&#xff09;IP地址配置&…