您的位置:首页 > 编程语言 > C语言/C++

C++ STL中常用的排序算法 20180331 day17

2018-03-31 14:45 405 查看
#include<iostream>
using namespace std;
#include<vector>
#include"functional"
#include"algorithm"
#include<set>
#include<string>
#include<list>
#include<stack>

//merge算法  前提是 合并两个有序的序列
void main61()
{
vector<int> v1;
vector<int> v2;
vector<int> v3;

v1.push_back(1);
v1.push_back(4);
v1.push_back(7);

v2.push_back(2);
v2.push_back(5);
v2.push_back(10);

v3.resize(10);

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);
~Teacher();

public:
int m_age;

};

Teacher::Teacher(int age)
{
this->m_age = age;
}

Teacher::~Teacher()
{

}

struct fllowAge{
bool operator()(const Teacher &left, const Teacher &right)
{
if (left.m_age > right.m_age)
{
return true;
}
else
{
return false;
}
}

};

//sort算法 实现自定义数据类型的排序
void main62()
{
Teacher t1(10);
Teacher t2(40);
Teacher t3(20);
Teacher t4(100);
Teacher t5(50);

vector<Teacher> m_vt;

m_vt.push_back(t1);
m_vt.push_back(t2);
m_vt.push_back(t3);
m_vt.push_back(t4);
m_vt.push_back(t5);

//sort 根据自定义的函数对象的排序
//实现了算法和数据类型的分离 通过函数对象来实现
sort(m_vt.begin(), m_vt.end(), fllowAge());

for (vector<Teacher>::iterator it = m_vt.begin(); it != m_vt.end(); it++)
{
cout << (*it).m_age << " ";
}

}

// random_shuffle() 随机洗牌 算法 打乱基础数据类型顺序

void main63()
{
vector<int> v1;

v1.push_back(1);
v1.push_back(4);
v1.push_back(5);
v1.push_back(6);
v1.push_back(7);
v1.push_back(8);

for (vector<int>::iterator it = v1.begin(); it != v1.end(); it++)
{
cout << *it << " ";
}
cout << endl;

random_shuffle(v1.begin(), v1.end());

for (vector<int>::iterator it1 = v1.begin(); it1 != v1.end(); it1++)
{
cout << *it1 << " ";
}
cout << endl;
//同是可以实现对于string数据类型的顺序打乱
string str = "hellocjlu";
random_shuffle(str.begin(), str.end());
cout << str << endl;

//栈操作复习

stack<int> m_stk;

m_stk.push(2);
m_stk.push(1);
m_stk.push(5);
m_stk.push(6);

while (!m_stk.empty())
{
cout << m_stk.top() << " ";
m_stk.pop();
}

}

//reverse()   算法 倒序  将容器中的元素倒序
void main64()
{
vector<int> v1;

v1.push_back(1);
v1.push_back(4);
v1.push_back(5);
v1.push_back(6);
v1.push_back(7);
v1.push_back(8);

for (vector<int>::iterator it = v1.begin(); it != v1.end(); it++)
{
cout << *it << " ";
}
cout << endl;

reverse(v1.begin(), v1.end());

for (vector<int>::iterator it1 = v1.begin(); it1 != v1.end(); it1++)
{
cout << *it1 << " ";
}
cout << endl;
}
int main()
{
//	main61(); //merge算法
//main62(); //sort算法
//main63(); // random_shuffle() 算法 打乱基础数据类型顺序
main64(); //reverse()   算法 倒序
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: