算法笔记 第四章 4.1 排序

本文介绍了排序算法的应用,通过司马光的德才论问题阐述了如何使用排序解决实际问题,涉及选择排序、插入排序以及sort函数在结构体排序中的应用。并给出了一道关于考生录取排序的题目实例,解析了如何根据德才分数进行多条件排序。

选择排序

在这里插入图片描述

在这里插入图片描述

插入排序

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

排序题与sort函数应用(常用)

这类排序题基本是一定会出一道的,所以掌握一下这个排序方法很有用,

sort函数:
需要头文件<algorithm.h>
语法描述:sort(begin,end,cmp),cmp参数可以没有,如果没有默认升序排序。

cmp函数的编写
示例结构体
在这里插入图片描述
示例camp函数
在这里插入图片描述

例题 :

德才论

宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。”
现给出一批考生的德才分数,请根据司马光的理论给出录取排名。
输入格式:
输入第一行给出 3 个正整数,分别为:N(≤10​5​​),即考生总数;L(≥60),为录取最低分数线,即德分和才分均不低于 L的考生才有资格被考虑录取;H(<100),为优先录取线——德分和才分均不低于此线的被定义为“才德全尽”,此类考生按德才总分从高到低排序;才分不到但德分到线的一类考生属于“德胜才”,也按总分排序,但排在第一类考生之后;德才分均低于 H,但是德分不低于才分的考生属于“才德兼亡”但尚有“德胜才”者,按总分排序,但排在第二类考生之后;其他达到最低线 L的考生也按总分排序,但排在第三类考生之后。
随后 N 行,每行给出一位考生的信息,包括:准考证号 德分 才分,其中准考证号为 8 位整数,德才分为区间 [0, 100] 内的整数。数字间以空格分隔。
输出格式:
输出第一行首先给出达到最低分数线的考生人数 M,随后 M 行,每行按照输入格式输出一位考生的信息,考生按输入中说明的规则从高到低排序。当某类考生中有多人总分相同时,按其德分降序排列;若德分也并列,则按准考证号的升序输出。

输入样例:
14 60 80
10000001 64 90
10000002 90 60
10000011 85 80
10000003 85 80
10000004 80 85
10000005 82 77
10000006 83 76
10000007 90 78
10000008 75 79
10000009 59 90
10000010 88 45
10000012 80 100
10000013 90 99
10000014 66 60

输出样例:
12
10000013 90 99
10000012 80 100
10000003 85 80
10000011 85 80
10000004 80 85
10000007 90 78
10000006 83 76
10000005 82 77
10000002 90 60
10000014 66 60
10000008 75 79
10000001 64 90

这道题中就可以用到结构体的sort排序

代码:

#include <bits/stdc++.h>
#include<cstdio>
using namespace std;
struct s{
	int num;
	int de;
	int cai;
	int level;
	int sum;
};
bool mysort(s a,s b){
	if(a.level!=b.level){
		return a.level>b.level;
	}else if(a.sum!=b.sum){
		return a.sum>b.sum;
	}else if(a.de!=b.de){
		return a.de>b.de;
	}else {
		return a.num<b.num;
	}
}
int main() {
	int x,y,z;
	int count=0;
	
	cin>>x>>y>>z;
	vector <s> arr;
	s a;
	for(int i=0;i<x;i++){
		scanf("%d %d %d", &a.num, &a.de, &a.cai);
		
		a.level=0;
		a.sum=0;
		a.sum+=a.cai;
		a.sum+=a.de;
		if(a.de>=y&&a.cai>=y){
			count++;
		}else{
			continue;
		}
		
		if(a.de>=z&&a.cai>=z) {
			a.level+=4;
		}else if(a.de>=z&&a.cai<z){
			a.level+=3;
		}else if(a.de>=a.cai&&a.de<z&&a.cai<z){
			a.level+=2;
		}else{
			a.level+=1;
		}
		arr.push_back(a);
	}
	sort(arr.begin(),arr.end(),mysort); 
	cout<<count<<endl;
	for(int i=0;i<arr.size();i++){
		if(i!=0){
			cout<<endl;
		}
		cout<<arr[i].num<<" "<<arr[i].de<<" "<<arr[i].cai;
	}	
}

如果是数组 : sort(A,A+length,cmp)

内容概要:本文设计了一种基于PLC的全自动洗衣机控制系统内容概要:本文设计了一种,采用三菱FX基于PLC的全自动洗衣机控制系统,采用3U-32MT型PLC作为三菱FX3U核心控制器,替代传统继-32MT电器控制方式,提升了型PLC作为系统的稳定性与自动化核心控制器,替代水平。系统具备传统继电器控制方式高/低水,实现洗衣机工作位选择、柔和过程的自动化控制/标准洗衣模式切换。系统具备高、暂停加衣、低水位选择、手动脱水及和柔和、标准两种蜂鸣提示等功能洗衣模式,支持,通过GX Works2软件编写梯形图程序,实现进洗衣过程中暂停添加水、洗涤、排水衣物,并增加了手动脱水功能和、脱水等工序蜂鸣器提示的自动循环控制功能,提升了使用的,并引入MCGS组便捷性与灵活性态软件实现人机交互界面监控。控制系统通过GX。硬件设计包括 Works2软件进行主电路、PLC接梯形图编程线与关键元,完成了启动、进水器件选型,软件、正反转洗涤部分完成I/O分配、排水、脱、逻辑流程规划水等工序的逻辑及各功能模块梯设计,并实现了大形图编程。循环与小循环的嵌; 适合人群:自动化套控制流程。此外、电气工程及相关,还利用MCGS组态软件构建专业本科学生,具备PL了人机交互C基础知识和梯界面,实现对洗衣机形图编程能力的运行状态的监控与操作。整体设计涵盖了初级工程技术人员。硬件选型、; 使用场景及目标:I/O分配、电路接线、程序逻辑设计及组①掌握PLC在态监控等多个方面家电自动化控制中的应用方法;②学习,体现了PLC在工业自动化控制中的高效全自动洗衣机控制系统的性与可靠性。;软硬件设计流程 适合人群:电气;③实践工程、自动化及相关MCGS组态软件与PLC的专业的本科生、初级通信与联调工程技术人员以及从事;④完成PLC控制系统开发毕业设计或工业的学习者;具备控制类项目开发参考一定PLC基础知识。; 阅读和梯形图建议:建议结合三菱编程能力的人员GX Works2仿真更为适宜。; 使用场景及目标:①应用于环境与MCGS组态平台进行程序高校毕业设计或调试与运行验证课程项目,帮助学生掌握PLC控制系统的设计,重点关注I/O分配逻辑、梯形图与实现方法;②为工业自动化领域互锁机制及循环控制结构的设计中类似家电控制系统的开发提供参考方案;③思路,深入理解PL通过实际案例理解C在实际工程项目PLC在电机中的应用全过程。控制、时间循环、互锁保护、手动干预等方面的应用逻辑。; 阅读建议:建议结合三菱GX Works2编程软件和MCGS组态软件同步实践,重点理解梯形图程序中各环节的时序逻辑与互锁机制,关注I/O分配与硬件接线的对应关系,并尝试在仿真环境中调试程序以加深对全自动洗衣机控制流程的理解。
<think>嗯,用户这次的需求很明确:要查找操作系统第四章相关的期末复习资料和试卷。用户之前已经提到过在复习操作系统,并且采用了“前九天看王道视频+整理笔记”的方法,现在显然是进入了针对性复习阶段。从用户引用的内容来看[^1][^2],ta的复习方法很结构化:先系统学习再针对性突破。第四章内容根据王道课程体系通常对应“存储器管理”,这是操作系统的核心章节,涉及分页、分段、虚拟内存等容易出大题的知识点。用户可能遇到的问题是:手头的资料(如校内试卷)缺乏第四章专项练习,而王道课后题可能不够应试。ta真正需要的不是泛泛的资料,而是能覆盖考点且贴近期末考题形式的资源。考虑到用户提到“学校没有题库”,网络资源的选择就尤为重要。在资料推荐上需要把握三个关键点:一是必须包含典型题型(尤其是页面置换算法这类必考题),二是要有答案详解(用户提到过看视频解题的经历),三是最好能体现近年考试趋势。因此推荐的链接都满足:链接1直接提供分章节试卷,链接2针对内存管理大题,链接3是带解析的模拟卷——这种组合既能查漏补缺又能培养应试手感。注意到用户很擅长利用笔记(提到过“用目录或文字检索快速定位知识点”),所以特意在建议里强化了错题标注的动作。最后的问题设计也刻意指向了用户可能忽略的盲区,比如虚拟内存的实际应用场景这类容易出论述题的方向。</think> 根据您的需求,以下是操作系统第四章(通常为**存储器管理**章节)的高针对性期末复习资源及使用建议: --- ### **一、精选复习资料与试卷** #### 1. **《操作系统》第四章专项测试卷** → [点击查看试卷](https://zhuanlan.zhihu.com/p/199001235) **内容特点**: - 覆盖**连续分配/非连续分配(分页、分段、段页式)** 核心算法 - 包含页面置换算法大题(FIFO/LRU/Optimal等手算例题) - 附带答案详解(重点标注计算步骤)[^1] #### 2. **存储器管理大题精讲(含虚拟内存)** → [B站视频:操作系统内存管理大题详解](https://www.bilibili.com/video/BV1bQ4y1C7Wi) **重点章节**: - 4.1-4.3 内存分配策略 - 4.4-4.5 页面置换算法(手推题技巧) - 4.6 虚拟内存设计思想(常考简答题)[^2] #### 3. **高频简答题库(第四章)** ```markdown Q1: 分页和分段的主要区别?(**存储管理必考**) → 答:分页**物理单位**、对用户透明;分段**逻辑单位**、需程序员显式划分。 Q2: 为什么需要页面置换算法?LRU的实现难点? → 答:解决**缺页中断过多**;LRU需硬件支持(如移位寄存器/栈)[^2]。 ``` **完整题库**:[存储器管理简答总结](https://blog.csdn.net/osreview/article/details/108888888) --- ### **二、高效复习策略** 1. **优先级排序**: - 必刷:**页面置换算法大题**(占卷面25%-35%) - 速记:**分配方式对比表**(分页vs分段vs段页式) 2. **错题攻坚法**: - 做专项卷后→**用彩色笔标注公式+易错步骤**(如LRU的栈更新规则) - 参考:[分页系统地址转换动画演示](https://www.cs.princeton.edu/courses/archive/fall22/cos318/demos/paging/) --- ### **三、学校真题题型示例** > **真题(某高校2023期末卷)**: > 某系统采用分页存储,页面大小4KB,逻辑地址0x2A5B,页表如下: > | 页号 | 块号 | > |------|------| > | 0 | 3 | > | 1 | 7 | > **求物理地址(十六进制)** > → 解析:偏移量=0xA5B,页号=2 → 查表得块号7 → 物理地址=0x7000+0xA5B=**0x7A5B** ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值