c++的排序算法

一:merge 是 C++ STL 中的一个算法函数,用于将两个已排序的序列合并成一个有序序列。

template<class InputIterator1, class InputIterator2, class OutputIterator, class Compare> OutputIterator merge(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp);

功能:
将两个已排序的范围 [first1, last1) 和 [first2, last2) 合并到范围 [result, result + (last1 - first1) + (last2 - first2)) 中,使用比较器 comp 进行元素的比较。

返回值:
返回指向存储结果的范围的尾后迭代器 result + (last1 - first1) + (last2 - first2)

//merge算法,容器元素合并,存储到另一个容器
// merge 函数只能将两个有序的范围合并成一个有序的范围,而不能自动对合并后的范围进行排序void test01()
{vector<int>v1;vector<int>v2;/*for (int i = 0; i < 5; i++){v1.push_back(i + 1);v2.push_back(i + 2);}*/for (int i = 5; i >=0; i--){v1.push_back(i + 1);v2.push_back(i + 2);}vector<int>v3;v3.resize(v1.size() + v2.size());//如果数据是升序,那么第六个参数不用写//merge(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin());//如果数据是降序,那么第六个参数写great<int>()merge(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin(),greater<int>());for_each(v3.begin(), v3.end(), [](int val)->void {cout << val << " "; });}

二:sort 是 C++ STL 中的一个算法函数,用于对指定范围内的元素进行排序。

函数原型:

 

cpp复制代码

template<class RandomAccessIterator> void sort(RandomAccessIterator first, RandomAccessIterator last); template<class RandomAccessIterator, class Compare> void sort(RandomAccessIterator first, RandomAccessIterator last, Compare comp);

功能:
对范围 [first, last) 内的元素进行排序。

返回值:
无。

//sort算法
struct mysort
{bool operator()(int v1, int v2){return v1 > v2;}
};
void test02()
{vector<int>v = { 2,35,634,523 };sort(v.begin(), v.end(),mysort());for_each(v.begin(), v.end(), [](int val)->void {cout << val << " "; });
}

random_shuffle 是 C++ STL 中的一个算法函数,用于对指定范围内的元素进行乱序排列。

template<class RandomAccessIterator> void random_shuffle(RandomAccessIterator first, RandomAccessIterator last); template<class RandomAccessIterator, class RandomNumberGenerator> void random_shuffle(RandomAccessIterator first, RandomAccessIterator last, RandomNumberGenerator&& gen);

功能:
对范围 [first, last) 内的元素进行随机乱序。

返回值:
无。

//random_shuffle 乱序
void test03()
{srand((unsigned int)time(NULL));vector<int>v;for (int i = 0; i < 10; i++){v.push_back(i + 1);}for_each(v.begin(), v.end(), [](int val)->void {cout << val << " "; });cout << endl;random_shuffle(v.begin(), v.end());for_each(v.begin(), v.end(), [](int val)->void {cout << val << " "; });
}

reverse 是 C++ STL 中的一个算法函数,用于反转指定范围内的元素顺序。

template<class BidirectionalIterator> void reverse(BidirectionalIterator first, BidirectionalIterator last);

功能:
对范围 [first, last) 内的元素进行反转。

返回值:
无。

//reverse 反转指定范围元素
void test04()
{vector<int>v;for (int i = 0; i < 10; i++){v.push_back(i + 1);}for_each(v.begin(), v.end(), [](int val)->void {cout << val << " "; });cout << endl;reverse(v.begin(), v.end());for_each(v.begin(), v.end(), [](int val)->void {cout << val << " "; });
}

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

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

相关文章

java基础之循环

Java中有三种主要的循环结构&#xff1a; while 循环do…while 循环for 循环 1、while循环 1.1、结构 while( 布尔表达式 ) { //循环内容 } 1.2、实例 public class TestWhile {public static void main(String[] args) {int x 1;while (x<10){System.out.println("…

组个最小数

给定数字0-9各若干个。你可以以任意顺序排列这些数字&#xff0c;但必须全部使用。目标是使得最后得到的数尽可能小&#xff08;注意0不能做首位&#xff09;。例如&#xff1a;给定两个0&#xff0c;两个1&#xff0c;三个5&#xff0c;一个8&#xff0c;我们得到的最小的数就…

f2fs解析(一)f2fs如何解决wandering tree

wandering tree问题是log-structured 文件系统&#xff08;LFS&#xff09; 特有的一个问题&#xff0c;因为LFS的脏数据是追加更新的&#xff0c;所以如果一个数据块变脏了&#xff0c;那么那个数据块的直接索引块、间接索引块都会变脏&#xff08;因为索引的地址变脏&#xf…

阿里云通义千问720亿参数模型开源,适配企业级、科研级高性能应用

12月1日&#xff0c;阿里云举办通义千问发布会&#xff0c;开源通义千问720亿参数模型Qwen-72B。Qwen-72B在10个权威基准测评创下开源模型最优成绩&#xff0c;成为业界最强开源大模型&#xff0c;性能超越开源标杆Llama 2-70B和大部分商用闭源模型。未来&#xff0c;企业级、科…

Spring Cloud + Vue前后端分离-第2章 使用Maven搭建SpringCloud项目

Spring Cloud Vue前后端分离-第2章 使用Maven搭建SpringCloud项目 Maven两大核心功能&#xff1a; 依赖管理&#xff08;Jar包管理&#xff09; 构建项目&#xff08;项目打包&#xff09; 使用Eureka搭建注册中心 使用spring initializr创建spring cloud项目 SpringCloud…

FastAPI之声明请求参数示例数据

在Pydantic模型中添加额外的JSON模式数据 您可以声明Pydantic模型的示例&#xff0c;这些示例将被添加到生成的JSON模式中。 示例代码 from fastapi import FastAPI from pydantic import BaseModelapp FastAPI()class Item(BaseModel):name: strdescription: str | None …

(C语言实现)高精度除法 (洛谷 P2005 A/B Problem II)

前言 本期我们分享用C语言实现高精度除法&#xff0c;可通过该题测试点我点我&#xff0c;洛谷 p2005。 那么话不多说我们开始吧。 讲解 大家还记不记得小学的时候我们是怎么做除法的&#xff1f;我们以1115为例。 我们的高精度除法也将采用这个思路进行&#xff0c;分别用两…

在 TS 中解析 ipa 文件

在 TS 中解析 ipa 文件 ipa即Xcode打包出来的APP的安装包&#xff0c;通过解析ipa中的文件&#xff0c;我们可以获得APP的DisplayName、Version、BundleIdentifier等信息&#xff0c; 同时也可以获取到APP证书的相关信息&#xff0c;包括APP的安装环境、证书的有效期、APP开通…

Python-算术运算符详解

运算符 算术运算符 关系运算符 逻辑运算符 赋值运算符 算术运算符&#xff1a;加减乘除 %求余 **平方 // 先算乘方&#xff0c;再算乘除&#xff0c;最后是加减。括号可以改变优先级 0不能作为除数&#xff08;不论是整型0还是浮点0&#xff09; 除法截断&#xff1a;舍弃小…

UDP群聊

客户端 import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader…

LeetCode738. Monotone Increasing Digits

文章目录 一、题目二、题解 一、题目 An integer has monotone increasing digits if and only if each pair of adjacent digits x and y satisfy x < y. Given an integer n, return the largest number that is less than or equal to n with monotone increasing digi…

使用VBA快速统计词组(单词组合)词频

实例需求&#xff1a;产品清单如A列所示&#xff0c;现在如下统计词组词频。想必各位小伙伴都指定如何使用字典对象实现去重&#xff0c;进而实现单个单词的词频统计。 但是统计词组词频就没有那么简单了&#xff0c;为了便于演示&#xff0c;此处的词组只限于两个单词的组合。…

自动驾驶右向辅助功能规范

目 录 Contents 目录 1. 介绍 Introduction. 8 1.1 此文档的范围和目的 Scope and Purpose of This Document 8 1.2 参考文档References. 9 1.3 文档的维护 Maintenance of the Document 10 1.4 缩略词Abbreviations. 10 1.5 文档概述Document Overview.. 11 1.6 功能…

GoLong的学习之路,进阶,Viper(yaml等配置文件的管理)

本来有今天是继续接着上一章写微服务的。但是这几天有朋友说&#xff0c;再写Web框架的时候&#xff0c;遇到一个问题&#xff0c;就是很多的中间件&#xff08;redis&#xff0c;微信&#xff0c;mysql&#xff0c;mq&#xff09;的配置信息写的太杂了&#xff0c;很不好管理。…

【解决办法】Pycharm中新添加或者导入项目文件名红色!

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、问题描述二、问题原因三、解决办法 一、问题描述 Pycharm的代码中添加新的文件夹&#xff0c;发现文件夹下的文件名是红色的&#xff0c;如下图&#xff1a; …

jvm-sandbox-repeater 精简版部署之standalone模式

jvm-sandbox-repeater 仅仅提供了录制回放的能力&#xff0c;如果需要完成业务回归、实时监控、压测等平台&#xff0c;后面须要有一个数据中心负责采集数据的加工、存储、搜索&#xff0c;repeater-console提供了简单的demo示例&#xff1b;一个模块管理平台负责管理JVM-Sandb…

设计模式——单例模式(Singleton Pattern)

概述 单例模式确保一个类只有一个实例&#xff0c;而且自行实例化并向整个系统提供整个实例&#xff0c;这个类称为单例类&#xff0c;它提供全局访问的方法。单例模式是一种对象创建型模式。单例模式有三个要点&#xff1a;一是某个类只能有一个实例&#xff1b;二是它必须自行…

矩阵基本操作算法

题目描述&#xff1a; 题目描述 根据主函数和头文件提示&#xff0c;编写子函数void matrixInput(int (*mat)[COL]); void matrixPrint(int *mat[ROW]); void matrixAddT(int *mat); ​ 分别实现矩阵的输入&#xff0c;输出&#xff0c;与自身的转置相加&#xff1a;void matr…

微信小程序开发中的图片缺少后自动居中问题的解决,自动居中样式,自适应图片多少的写法

下面是写的wxml的view样式类似于web开发中的HTML文件 home-grid是我创建的一个父样式&#xff0c;采用子绝父相的定位方式 我在home-grid的父view&#xff08;类似于web中div&#xff09;中包含了三个小的子样式分别是下述代码中的class“yellowstar”&#xff0c;class“maint…

Java---线程讲解(二)

文章目录 1. Runnable接口2. 卖票案例3. 同步代码块解决数据安全问题4. 同步方法解决数据安全问题5. 线程安全的类6. Lock锁 1. Runnable接口 1. 创建线程的另一种方法是声明一个实现Runnable接口的类&#xff0c;之后重写run()方法&#xff0c;然后可以分配类的实例&#xff0…