stl中常用的排序算法

Posted 菜鸟根据地

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了stl中常用的排序算法相关的知识,希望对你有一定的参考价值。

#include"iostream"
#include"vector"
using namespace std;
#include"string"
#include"algorithm"

void main_mergr()
{
	vector<int > v1;
	v1.push_back(1);
	v1.push_back(2);
	v1.push_back(3);

	vector<int > v2;
	v2.push_back(1);
	v2.push_back(6);
	v2.push_back(8);

	vector<int > v3;
	v3.resize(v1.size() + v2.size());//这一步还挺重要的的呢
	// 合并两个有序序列,存放到另一个序列。无序则出错。
	merge(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin());

	for (vector<int>::iterator it = v3.begin(); it != v3.end(); it++)
	{
		cout << *it << " ";
	}
}  
////////////////////////////////////////////////////////////////////////
class Teacher
{
public:
	Teacher(int age, string name)
	{
		m_age = age;
		m_name = name;
	}
	void printT()
	{
		cout << "name: " << m_name << " m_age " << m_age << endl;
	}
protected:
public:
	int m_age;
	string m_name;
};
bool Compare(Teacher & tem1, Teacher &tem2)
{
	return (tem1.m_age > tem2.m_age);
}
void main_sort()
{	
	Teacher t1(1, "dsd"), t2(3, "dsfsd"), t3(13, "dfsdd");
	vector<Teacher> tem;
	tem.push_back(t1);
	tem.push_back(t2);
	tem.push_back(t3);
	//以默认升序的方式重新排列指定范围内的元素。若要改排序规则,可以输入比较函数。
	sort(tem.begin(), tem.end(), Compare);
	
	for (vector<Teacher>::iterator it = tem.begin(); it != tem.end(); it++)
	{
		it->printT();
	}
}
/////////////////////////////////////////////////
void main_random_shuffle()
{
	vector<int > v1;
	v1.push_back(1);
	v1.push_back(9);
	v1.push_back(3);
	random_shuffle(v1.begin(), v1.end());//对指定范围内的元素随机调整次序
	for (vector<int>::iterator it = v1.begin(); it != v1.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;
	reverse(v1.begin(), v1.end());//让序列逆序
	for (vector<int>::iterator it = v1.begin(); it != v1.end(); it++)
	{
		cout << *it << " ";
	}
}
int main()
{
	main_mergr();
	cout << endl;
	main_sort();
	main_random_shuffle();
	system("pause");
}

  

以上是关于stl中常用的排序算法的主要内容,如果未能解决你的问题,请参考以下文章

C++中STL常用算法

STL常用算法总结 by StoneXie

STL初步

C++ STL中排序算法的工作

C++算法从std::sort到排序算法

STL六大组件中算法模块sort为啥采用快速排序作为底层思想