C/C++经典排序问题,sort函数使用

2024-09-06 18:04

本文主要是介绍C/C++经典排序问题,sort函数使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1. 前言

2. 正文

2.1 问题

2.2 解决办法

2.2.1 思路

2.2.2 代码实现

2.2.3 测试结果

3. 备注


1. 前言

大家在学习C语言的时候,是不是经常被排序算法折磨的很难那首,其实都是但是在C++中有专门的,排序函数,而且支持自定义排序算法。下面我就带大家看看,sort函数简单的数组排序中的应用。

2. 正文

2.1 问题

题目描述:

输入n(n<=100)个整数,按照绝对值从大到小排序后输出。题目保证对于每一个测试实例,所有的数的绝对值都不相等。

输入格式:

5 2 -4 7 -5 -9

5 -3 -5 -7 0 -23

0

输出格式:

-9 7 -5 -4 2 
-23 -7 -5 -3 0 

看完题目之后,大家还是可以现场是写一下,必经过程和思路都是最重要的。

2.2 解决办法

2.2.1 思路

首先通过二维容器去读取元素,储存元素的数量和数据,然后进行排序,因为不符合sort默认的升序排列,因此我们需要自定已排序算法compare。注意这个函数值返回值是bool类型的,此外使用sort函数还需要包含<algorithm>算法头文件。

需要注意的是,二位容器的添加行和列的方式不一样,添加列只需要push_back(data),添加行则需要push_back(vector<data>)才可以。

2.2.2 代码实现

#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;bool compare(int &data1, int &data2)
{if (fabs(data1) > fabs(data2))return true;elsereturn false;
}
int main(int argc, char *argv[])
{int n, i = 0, i_temp = 0;int temp;vector<vector<int>> data_in;cin >> n;while (n){data_in.push_back(vector<int>());while (n--){cin >> temp;data_in[i].push_back(temp);}i++;cin >> n;}while (i_temp < i){sort(data_in[i_temp].begin(), data_in[i_temp].end(), compare);for (int data : data_in[i_temp]){cout << data << ' ';}cout << endl;i_temp++;}for (auto it : data_in){it.clear();}data_in.clear();return 0;
}

2.2.3 测试结果

输出结果也是符合题目中的输出结果。

3. 备注

>>>>>>

人一生会遇到很多人,没有谁是不重要的,她出现的目的都是为了使你成长。

>>>>>>

你相信什么,你就成为什么样的人。——奥普拉·温弗瑞

 >>>>>>

制作不易,且行且珍惜,点个关注支持下吧。

这篇关于C/C++经典排序问题,sort函数使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1142733

相关文章

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

解决RocketMQ的幂等性问题

《解决RocketMQ的幂等性问题》重复消费因调用链路长、消息发送超时或消费者故障导致,通过生产者消息查询、Redis缓存及消费者唯一主键可以确保幂等性,避免重复处理,本文主要介绍了解决RocketM... 目录造成重复消费的原因解决方法生产者端消费者端代码实现造成重复消费的原因当系统的调用链路比较长的时

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

C++11范围for初始化列表auto decltype详解

《C++11范围for初始化列表autodecltype详解》C++11引入auto类型推导、decltype类型推断、统一列表初始化、范围for循环及智能指针,提升代码简洁性、类型安全与资源管理效... 目录C++11新特性1. 自动类型推导auto1.1 基本语法2. decltype3. 列表初始化3

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符