多重排序【今日题记】

news2024/11/25 10:56:09

多重排序

    • 多重排序
      • 题目
      • 分析
      • 思路
        • 代码
      • 代码
      • 结构体知识

多重排序

需要对多个条件进行排序,因此可以称之为多重排序。

题目

在这里插入图片描述

某生物实验室记录了n种(n<=1000)病毒信息,每种病毒都有编号、传染性和致病性三个基本信息,编号是1000-9999的人工编号,其中的传染性和致病性是用0-100的数值代表其严重程度。请你帮实验室完成这些病毒信息的处理,即按传染性升序排序,若传染性相同则按致病性降序排序。

输入格式:
多组输入。每组先输入一个正整数n(1<=n && n <= 100),代表有n种病毒,接下来分别输入每种病毒的信息,即编号number(1000-9999)、传染性Pi(0-100)、致病性Di(0-100)。

提示:以条件 scanf(“%d”,&n)!=EOF 来确定是否结束多组数据的输入。

输出格式:
对于每组数据输出n行,每行三个数值,空格分隔开,分别是number、Pi、Di。

输入样例:
在这里给出一组输入。例如:

3
1001 10 30
1006 5 60
2001 30 12
4
1001 10 30
1006 5 20
2001 30 12
1008 5 60

输出样例:
在这里给出相应的输出。例如:

result:
1006 5 60
1001 10 30
2001 30 12
result:
1008 5 60
1006 5 20
1001 10 30
2001 30 12

分析

具体来说,这道题需要根据以下条件进行排序:

  • 主要条件:按照传染性(Pi)升序排序。
  • 次要条件:如果传染性(Pi)相同,则按照致病性(Di)降序排序。

这种多重排序要求根据多个字段进行排序,当主要条件相同时,使用次要条件来决定顺序。这样的排序通常会在数据处理、数据库查询和某些竞赛问题中出现。

思路

  1. 使用结构体来存储数据
    在这里插入图片描述
typedef struct
{
   
    int number; /* 病毒id */
    int Pi;
    int Di;
}
Virus;
  1. 排序:
  • Pi升序
    在这里插入图片描述
	// 冒泡排序:if(arr[i] > arr[j]) swap(arr[i], arr[j]);
	if(arr[i].Pi > arr[j].Pi) swap(arr[i], arr[j]);
  • Pi相同,则比较Di,Di降序
    在这里插入图片描述
if(arr[i].Pi == arr[j].Pi && arr[i].Di < arr[j].Di) swap;

综合两种情况,那么当满足条件((p + i)->Pi > (p + j)->Pi) || (((p + i)->Pi == (p + j)->Pi) && ((p + i)->Di < (p + j)->Di))时,swap

代码
void sort(Virus* p, int len)
{
   
    // 冒泡排序; 1. Pi升序 2. Pi相同,则比较Di,Di降序
    for(int i = 0; i < len - 1; ++i)
    {
   
        for(int j = i + 1; j < len; ++j)
        {
   
            // 冒泡排序:if(arr[i] > arr[j]) swap
            if((

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SVN学习(002 svn冲突解决)

尚硅谷SVN高级教程(svn操作详解) 总时长 4:53:00 共72P 此文章包含第20p-第p29的内容 冲突 产生冲突的操作 &#xff08;第一种 相互不影响的操作&#xff09; 用户1修改第二行 用户2修改第四行 用户1提交 用户2提交&#xff0c;提交的时候会提示版本已过时 这时将用…

力扣SQL 即时食物配送 II min函数 嵌套查询

Problem: 1174. 即时食物配送 II &#x1f468;‍&#x1f3eb; 参考题解 Code -- 计算立即配送的订单百分比 select round (-- 计算订单日期与客户偏好配送日期相同的订单数量sum(case when order_date customer_pref_delivery_date then 1 else 0 end) * 100 /-- 计算总订…

掌握Three.js:学习路线,成为3D可视化开发的高手!

学习Three.js可以按照以下路线进行&#xff1a; 基础知识&#xff1a; 首先要了解基本的Web开发知识&#xff0c;包括HTML、CSS和JavaScript。如果对这些知识已经比较熟悉&#xff0c;可以直接进入下一步。 Three.js文档&#xff1a; 阅读Three.js官方文档是学习的第一步。官…

如何下载和安装SQLynx数据库管理工具? (MySQL作为测试数据库)

目录 1. 官网下载 2. 安装软件 3. 启动SQLynx软件 4. 开始使用 5. 执行第一条SQL语句 6. 总结 SQLynx是一款先进的Web SQL集成开发环境&#xff08;IDE&#xff09;&#xff0c;专为数据库管理、查询和数据分析设计。作为一个基于浏览器的工具&#xff08;同时也支持桌面…

掌握 NumPy:高效数组处理综合指南(第 1/2 部分)

掌握 NumPy&#xff1a;高效数组处理综合指南&#xff08;第 1/2 部分&#xff09; 文章目录 一、介绍二、什么是Numpy&#xff0c;我们为什么要使用它&#xff1f;三. 数组初始化四. 计算速度和内存使用量五、内存使用情况六、数据类型七、索引和切片 一、介绍 你们以前听说过…

连接和断开信号演示之二

代码; #include <gtk-2.0/gtk/gtk.h> #include <gtk-2.0/gdk/gdkkeysyms.h> #include <glib-2.0/glib.h> #include <stdio.h>void button_press(GtkEventBox *ebox,GdkEventButton *event,GtkLabel *label) {const char *citem;switch(event->type…

[图解]建模相关的基础知识-15

1 00:00:01,030 --> 00:00:05,820 接下来&#xff0c;我们就开始讲解的知识点 2 00:00:05,830 --> 00:00:11,810 就是范式知识点 3 00:00:12,130 --> 00:00:17,490 关系这个理论里面&#xff0c;随着历史的发展 4 00:00:17,700 --> 00:00:21,280 它发展出很多的…

力扣随机一题 模拟+字符串

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 1910.删除一个字符串中所有出现的给定子字符串【中等】 题目&#xff1a; …

基于STM32的智能工厂环境监测系统

目录 引言环境准备智能工厂环境监测系统基础代码实现&#xff1a;实现智能工厂环境监测系统 4.1 数据采集模块4.2 数据处理4.3 控制系统实现4.4 用户界面与数据可视化应用场景&#xff1a;智能工厂管理与优化问题解决方案与优化收尾与总结 1. 引言 智能工厂环境监测系统通过…

【转】FreeRTOS通用移植,以keil和IAR工程 M7核为例

目录 keil: IAR keil: 原文在https://bbs.eeworld.com.cn/thread-1281875-1-1.html 本篇讲述移植FreeRTOS,并创建运行一个任务&#xff0c;对象芯片为M7系列的兆易创新GD32H7xx系列。 一.准备工作 1.下载FreeRTOS源码官网 http://www.freertos.org/ 或者托管网站FreeRTOS…

Vue71-嵌套(多级)路由

一、需求 二、开发步骤 2-1、编写路由组件 2-2、编写路由规则 2-3、编写路由标签<router-link>、<router-view> 三、小结

(vue3)基于vite+vue3+element-plus项目创建

(vue3)基于vitevue3element-plus项目创建 vue.js官方中文文档&#xff1a;https://cn.vuejs.org/guide/quick-start.html vite官方中文文档&#xff1a;https://cn.vitejs.dev/guide/ element-plus官网&#xff1a;https://element-plus.org/zh-CN/guide/installation.html 第…

Github 2024-06-19 C开源项目日报 Top9

根据Github Trendings的统计,今日(2024-06-19统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量C项目9C++项目1Netdata: 开源实时监控平台 创建周期:4020 天开发语言:C协议类型:GNU General Public License v3.0Star数量:68982 个Fork数量…

echarts实现折线图点击添加标记

文章目录 背景一、代码示例 背景 业务场景体现在功能层面主要两点&#xff0c; 折线图表设置点击事件点击事件与图标渲染标记绑定 对于节点没有被添加标记的可以&#xff0c;弹框提示添加标记&#xff0c;并提供标记内容输入框&#xff0c;已经添加过标记的点&#xff0c;点…

python pynput实现鼠标点击两坐标生成截图

脚本主要实现以下功能&#xff1a; 按ctrl开始截图&#xff0c;点击两个坐标&#xff0c;保存截图tk输出截图文本信息&#xff0c;文本输出内容倒序处理默认命名为A0自增。支持自定义名称&#xff0c;自增编号&#xff0c;修改自定义名称自增重新计算清空文本框内容 from pyn…

笨蛋学算法之LeetCodeHot100_5_三数之和(Java)

package com.lsy.leetcodehot100;import java.util.ArrayList; import java.util.Arrays; import java.util.List;public class _Hot6_三数之和 {public static List<List<Integer>> threeSum(int[] nums) {//先排序数组Arrays.sort(nums);//存放结果集List<Lis…

超强开源全能日程助手—揭秘FullCalendar

引言 FullCalendar 是一个广受欢迎的开源 JavaScript 库&#xff0c;用于在网页上展示和管理事件和日程。 它最初是基于 jQuery 开发的&#xff0c;但随着时间的推移&#xff0c;经过 v1~v6 版本的迭代后&#xff0c;它已经全面支持React、Vue 和 Angular 的版本。FullCalend…

【ARMv8/v9 GIC 系列 2.2 -- GIC SPI 中断的 GICD_ISACTIVER 和 GICD_ICACTIVER 配置】

文章目录 GIC 中断 Active 状态的配置中断状态分类GICD_ISACTIVER<n>GICD_ICACTIVER<n>参数 n 编号解释中断设置举例设置中断ID 68为活动状态清除中断ID 68的活动状态 小结 GIC 中断 Active 状态的配置 在ARMv8/ARMv9 体系结构中&#xff0c;GICD_ISACTIVER<n&…

2024年全国青少信息素养大赛python编程复赛集训第四天编程题分享

整理资料不容易,感谢各位大佬给个点赞和分享吧,谢谢 大家如果不想阅读前边的比赛内容介绍,可以直接跳过:拉到底部看集训题目 (一)比赛内容: 【小学组】 1.了解输入与输出的概念,掌握使用基本输入输出和简单运算 为主的标准函数; 2.掌握注释的方法; 3.掌握基本数…

【一步一步了解Java系列】:认识异常类

看到这句话的时候证明&#xff1a;此刻你我都在努力 加油陌生人 个人主页&#xff1a;Gu Gu Study专栏&#xff1a;一步一步了解Java 喜欢的一句话&#xff1a; 常常会回顾努力的自己&#xff0c;所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者&#xff1a;小闭…