【C++】STL 算法 - 排序算法 ( 合并排序算法 - merge 函数 | 随机排序算法 - random_shuffle 函数 | 反转序列算法 - reverse 函数 )

这篇具有很好参考价值的文章主要介绍了【C++】STL 算法 - 排序算法 ( 合并排序算法 - merge 函数 | 随机排序算法 - random_shuffle 函数 | 反转序列算法 - reverse 函数 )。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。





一、合并排序算法 - merge 函数



1、函数原型分析


在 C++ 语言 的 标准模板库 ( STL , STL Standard Template Library ) 中 , 提供了 merge 合并排序算法函数 用于 将 两个已排序好的容器 合并成一个新的已排序的容器 ;


merge 合并排序算法 函数原型 如下 :

template <class InputIterator1, class InputIterator2, class OutputIterator>  
OutputIterator merge(InputIterator1 first1, InputIterator1 last1,  
                     InputIterator2 first2, InputIterator2 last2,  
                     OutputIterator result);    
  • 参数解析 :
    • InputIterator1 first1 参数 : 有序 输入 容器 1 的 迭代器范围 的 起始迭代器 ( 包含该迭代器指向的元素 ) ;
    • InputIterator1 last1 参数 : 有序 输入 容器 1 的 迭代器范围 的 终止迭代器 ( 不包含该迭代器指向的元素 ) ;
    • InputIterator2 first2 参数 : 有序 输入 容器 2 的 迭代器范围 的 起始迭代器 ( 包含该迭代器指向的元素 ) ;
    • InputIterator2 last2 参数 : 有序 输入 容器 2 的 迭代器范围 的 终止迭代器 ( 不包含该迭代器指向的元素 ) ;
  • 返回值解析 : 将上述 两个输入容器 迭代器的范围 的元素 进行 合并排序 , 放入到 输出容器中 , 返回的迭代器 是 指向 " 有序输出容器 首元素 " 的迭代器 ;

2、代码示例


代码示例 :

#include "iostream"
using namespace std;
#include <vector>
#include <algorithm>
#include "functional"

int main() {

	// 输入容器
	vector<int> v1 = { 1, 3, 5 };
	vector<int> v2 = { 2, 4, 6 };

	// 输出容器
	vector<int> v3(v1.size() + v2.size());

	// 合并 v1 和 v2 到 v3 , 默认使用 < 操作符进行比较
	merge(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin());

	// 向 foreach 循环中传入 Lambda 表达式
	for_each(v3.begin(), v3.end(), [](int a) {
		cout << a << " ";
		});
	cout << endl;

	
	// 控制台暂停 , 按任意键继续向后执行
	system("pause");
	return 0;
};

执行结果 :

1 2 3 4 5 6
Press any key to continue . . .

【C++】STL 算法 - 排序算法 ( 合并排序算法 - merge 函数 | 随机排序算法 - random_shuffle 函数 | 反转序列算法 - reverse 函数 ),算法,c++,排序算法,合并排序,随机排序,反转序列,sort





二、随机排序算法 - random_shuffle 函数



1、函数原型分析


在 C++ 语言 的 标准模板库 ( STL , STL Standard Template Library ) 中 , 提供了 random_shuffle 随机排序算法函数 用于 对容器中的元素进行随机排序 ;


random_shuffle 随机排序算法 函数原型 如下 :

template <class RandomAccessIterator>  
void random_shuffle(RandomAccessIterator first, RandomAccessIterator last);   
  • 参数解析 :
    • RandomAccessIterator first 参数 : 迭代器范围 的 起始迭代器 ( 包含该迭代器指向的元素 ) ;
    • RandomAccessIterator last 参数 : 迭代器范围 的 终止迭代器 ( 不包含该迭代器指向的元素 ) ;
  • 返回值解析 : 没有返回值 ;

2、代码示例


在下面的示例中 ,

vector 单端数组 容器中 , 初始元素顺序为 :

9 5 2 7

调用 如下代码 :

	// 随机排序
	random_shuffle(myVector.begin(), myVector.end());

进行随机排序后 , 再次查看元素顺序 , 变为 :

9 5 7 2

代码示例 :

#include "iostream"
using namespace std;
#include <vector>
#include <algorithm>
#include "functional"

int main() {

	// 要随机排序的容器
	vector<int> myVector{9, 5, 2, 7};

	// 遍历打印容器中元素内容
	for_each(myVector.begin(), myVector.end(), [](int a) {
		cout << a << " ";
		});
	cout << endl;

	// 随机排序
	random_shuffle(myVector.begin(), myVector.end());

	// 遍历打印容器中元素内容
	for_each(myVector.begin(), myVector.end(), [](int a) {
		cout << a << " ";
		});
	cout << endl;
	
	// 控制台暂停 , 按任意键继续向后执行
	system("pause");
	return 0;
};

执行结果 :

9 5 2 7
9 5 7 2
Press any key to continue . . .

【C++】STL 算法 - 排序算法 ( 合并排序算法 - merge 函数 | 随机排序算法 - random_shuffle 函数 | 反转序列算法 - reverse 函数 ),算法,c++,排序算法,合并排序,随机排序,反转序列,sort





三、反转序列算法 - reverse 函数



1、函数原型分析


在 C++ 语言 的 标准模板库 ( STL , STL Standard Template Library ) 中 , 提供了 reverse 反转序列算法函数 用于 对容器中的元素进行 反转序列 ;

reverse 反转序列 函数 的 作用是 是 将序列 [first, last) 中的元素顺序颠倒 , 使得原来序列的第一个元素成为最后一个 , 原来序列的最后一个元素成为第一个 , 依此类推 ;

该算法函数 , 并不涉及到 排序操作 , 只是单纯的将 元素顺序 进行反转 ;


reverse 反转序列算法 函数原型 如下 :

template <class BidirectionalIterator>  
void reverse(BidirectionalIterator first, BidirectionalIterator last);  
  • 参数解析 :
    • BidirectionalIterator first 参数 : 迭代器范围 的 起始迭代器 ( 包含该迭代器指向的元素 ) ;
    • BidirectionalIterator last 参数 : 迭代器范围 的 终止迭代器 ( 不包含该迭代器指向的元素 ) ;
  • 返回值解析 : 没有返回值 ;

2、代码示例


代码示例 :

#include "iostream"
using namespace std;
#include <vector>
#include <algorithm>
#include "functional"

int main() {

	// 要随机排序的容器
	vector<int> myVector{9, 5, 2, 7};

	// 遍历打印容器中元素内容
	for_each(myVector.begin(), myVector.end(), [](int a) {
		cout << a << " ";
		});
	cout << endl;

	// 倒序排序
	reverse(myVector.begin(), myVector.end());

	// 遍历打印容器中元素内容
	for_each(myVector.begin(), myVector.end(), [](int a) {
		cout << a << " ";
		});
	cout << endl;
	
	// 控制台暂停 , 按任意键继续向后执行
	system("pause");
	return 0;
};

执行结果 :

9 5 2 7
7 2 5 9
Press any key to continue . . .

【C++】STL 算法 - 排序算法 ( 合并排序算法 - merge 函数 | 随机排序算法 - random_shuffle 函数 | 反转序列算法 - reverse 函数 ),算法,c++,排序算法,合并排序,随机排序,反转序列,sort文章来源地址https://www.toymoban.com/news/detail-801724.html

到了这里,关于【C++】STL 算法 - 排序算法 ( 合并排序算法 - merge 函数 | 随机排序算法 - random_shuffle 函数 | 反转序列算法 - reverse 函数 )的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包