当前位置: 首页 > news >正文

STL——排序算法

算法简介

  • sort ——//对容器内元素进行排序
  • random_shuffle ——//洗牌 指定范围内的元素随机调整次序
  • merge ——// 容器元素合并,并存储到另一容器中
  • reverse ——// 反转指定范围的元素

1.sort

函数原型:

  • sort(iterator beg, iterator end, _Pred);——// 按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置; beg 开始迭代器;end 结束迭代器;_Pred 谓词
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
#include<functional>
//sort——排序算法
void Print(int val)
{cout << val << " ";
}
void test01()
{vector<int>v;v.push_back(10);v.push_back(50);v.push_back(20);v.push_back(40);v.push_back(30);//sort升序排序sort(v.begin(), v.end());for_each(v.begin(), v.end(), Print);cout << endl;//sort降序排序sort(v.begin(), v.end(), greater<int>());for_each(v.begin(), v.end(), Print);cout << endl;
}
int main()
{test01();system("pause");return 0;
}

2.random_shuffle

函数原型:

  • random_shuffle(iterator beg, iterator end);——// 指定范围内的元素随机调整次序; beg 开始迭代器;end 结束迭代器
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
#include<ctime>
//random_shuffle——排序算法
void Print(int val)
{cout << val << " ";
}
void test01()
{srand((unsigned int)time(NULL));vector<int>v;for (int i = 0; i < 10 ; i++){v.push_back(i);}random_shuffle(v.begin(), v.end());for_each(v.begin(), v.end(), Print);cout << endl;
}
int main()
{test01();system("pause");return 0;
}

注:random_shuffle洗牌算法使用时需要加随机数种子 

3.merge

函数原型:

  • merge(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest);——// 容器元素合并,并存储到另一容器中; 注意: 两个容器必须是有序的; beg1 容器1开始迭代器 ;end1 容器1结束迭代器; beg2 容器2开始迭代器; end2 容器2结束迭代器 ;dest 目标容器开始迭代器
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
//merge——排序算法
void Print(int val)
{cout << val << " ";
}
void test01()
{vector<int>v1;vector<int>v2;for (int i = 0; i < 10; i++){v1.push_back(i);v2.push_back(i + 3);}//目标容器vector<int>vTarget;//提前给目标容器分配空间vTarget.resize(v1.size() + v2.size());merge(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarget.begin());for_each(vTarget.begin(), vTarget.end(), Print);cout << endl;
}
int main()
{test01();system("pause");return 0;
}

 注:merge合并两个容器必须是有序序列

4.reverse

函数原型:

  • reverse(iterator beg, iterator end);——// 反转指定范围的元素;beg 开始迭代器;end 结束迭代器
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
//reverse——排序算法
void Print(int val)
{cout << val << " ";
}
void test01()
{vector<int>v;v.push_back(10);v.push_back(50);v.push_back(30);v.push_back(40);v.push_back(20);cout << "反转前:" << endl;for_each(v.begin(), v.end(), Print);cout << endl;cout << "反转后:" << endl;reverse(v.begin(), v.end());for_each(v.begin(), v.end(), Print);cout << endl;}
int main()
{test01();system("pause");return 0;
}

相关文章:

  • pytest pytest.ini 设置目录路径,不执行该目录下的case
  • 前端框架前置学习(4) AJAX
  • 基于Unity Editor开发一个技能编辑器可能涉及到的内容
  • C++设计模式:单例模式(饿汉式、懒汉式)
  • LangChain.js 实战系列:入门介绍
  • B/S架构云端SaaS服务的医院云HIS系统源码,自主研发,支持电子病历4级
  • LDO线性稳压器与开关电源的原理
  • 2023年国赛高教杯数学建模E题黄河水沙监测数据分析解题全过程文档及程序
  • 再见2023,你好2024
  • 物联网协议Coap之Californium CoapServer解析
  • 【产品经理】axure中继器的使用——表格增删改查分页实现
  • 计算机基础--Linux详解
  • VS2013中特殊操作
  • py注册登录界面
  • 什么是动态IP?静态IP和动态IP有什么区别?
  • Bootstrap JS插件Alert源码分析
  • CentOS6 编译安装 redis-3.2.3
  • eclipse的离线汉化
  • Object.assign方法不能实现深复制
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 什么是Javascript函数节流?
  • 正则学习笔记
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • #1015 : KMP算法
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (11)MSP430F5529 定时器B
  • (4) PIVOT 和 UPIVOT 的使用
  • (4)Elastix图像配准:3D图像
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (笔试题)合法字符串
  • (篇九)MySQL常用内置函数
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (四)c52学习之旅-流水LED灯
  • *p++,*(p++),*++p,(*p)++区别?
  • .bat批处理出现中文乱码的情况
  • .cn根服务器被攻击之后
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .NET大文件上传知识整理
  • .net流程开发平台的一些难点(1)
  • /run/containerd/containerd.sock connect: connection refused
  • ??javascript里的变量问题
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?
  • [] 与 [[]], -gt 与 > 的比较
  • []新浪博客如何插入代码(其他博客应该也可以)
  • [AIGC] 使用Curl进行网络请求的常见用法
  • [android] 天气app布局练习
  • [bzoj4010][HNOI2015]菜肴制作_贪心_拓扑排序
  • [C++][基础]1_变量、常量和基本类型
  • [C++]类和对象【上篇】
  • [CISCN2021 Quals]upload(PNG-IDAT块嵌入马)
  • [ffmpeg] aac 音频编码
  • [GN] DP学习笔记板子
  • [HNOI2010]BUS 公交线路