C++,stl,常用排序算法,常用拷贝和替换算法

目录

1.常用排序算法

sort

random_shuffle

merge

reverse

2.常用拷贝和替换算法

copy

replace

replace_if

swap


1.常用排序算法

C++,stl,常用排序算法,常用拷贝和替换算法_第1张图片

sort

C++,stl,常用排序算法,常用拷贝和替换算法_第2张图片

默认从小到大排序 

#include
using namespace std;

int main()
{
	vector v;
	v.push_back(1);
	v.push_back(2);
	v.push_back(9);
	v.push_back(2);
	v.push_back(4);
	
	sort(v.begin(),v.end());
	
	for(auto &ele:v)
	{
		cout << ele << ' ';
	}
	
	sort(v.begin(),v.end(),greater());
	//降序排列
	cout << endl;
	
	for(auto &ele:v)
	{
		cout << ele << ' ';
	}
	
	return 0;
}

C++,stl,常用排序算法,常用拷贝和替换算法_第3张图片

random_shuffle

使用的时候要加随机数种子

C++,stl,常用排序算法,常用拷贝和替换算法_第4张图片 

#include
using namespace std;

void print(int v)
{
	cout << v << ' ';
}

int main()
{
	srand((unsigned int)time(NULL));
	
	vector v;
	v.push_back(1);
	v.push_back(2);
	v.push_back(9);
	v.push_back(2);
	v.push_back(4);
	
	for_each(v.begin(),v.end(),print);
	
	cout << endl;
	
	random_shuffle(v.begin(),v.end());
	for_each(v.begin(),v.end(),print);
	
	return 0;
}

 C++,stl,常用排序算法,常用拷贝和替换算法_第5张图片

merge

C++,stl,常用排序算法,常用拷贝和替换算法_第6张图片 

#include
using namespace std;

void print(int v)
{
	cout << v << ' ';
}

int main()
{
	vector v1;
	v1.push_back(1);
	v1.push_back(2);
	v1.push_back(9);
	v1.push_back(2);
	v1.push_back(4);
	
	sort(v1.begin(),v1.end());
	
	vector v2;
	for(int i = 2; i <= 6; i += 2)
	{
		v2.push_back(i);
	}
	
	vector v;
	v.resize(v1.size() + v2.size());
	
	//必须v1,v2都是升序或者都是降序
	merge(v1.begin(),v1.end(),v2.begin(),v2.end(),v.begin());
	
	for_each(v.begin(),v.end(),print);
	
	return 0;
}

 C++,stl,常用排序算法,常用拷贝和替换算法_第7张图片

reverse

C++,stl,常用排序算法,常用拷贝和替换算法_第8张图片 

#include
using namespace std;

void print(int v)
{
	cout << v << ' ';
}

int main()
{
	vector v1;
	v1.push_back(1);
	v1.push_back(2);
	v1.push_back(9);
	v1.push_back(2);
	v1.push_back(4);
	
	for_each(v1.begin(),v1.end(),print);
	cout << endl;
	reverse(v1.begin(),v1.end());
	cout << "反转后" << endl;
	for_each(v1.begin(),v1.end(),print);
	
	return 0;
}

C++,stl,常用排序算法,常用拷贝和替换算法_第9张图片 

2.常用拷贝和替换算法

C++,stl,常用排序算法,常用拷贝和替换算法_第10张图片 

copy

C++,stl,常用排序算法,常用拷贝和替换算法_第11张图片

#include
using namespace std;

void print(int v)
{
	cout << v << ' ';
}

int main()
{
	vector v1;
	v1.push_back(1);
	v1.push_back(2);
	v1.push_back(9);
	v1.push_back(2);
	v1.push_back(4);
	
	for_each(v1.begin(),v1.end(),print);
	cout << endl;
	
	vector v2;
	v2.resize(v1.size());
	copy(v1.begin(),v1.end(),v2.begin());
	
	cout << "复制后" << endl;
	for_each(v2.begin(),v2.end(),print);
	
	return 0;
}

C++,stl,常用排序算法,常用拷贝和替换算法_第12张图片

replace

C++,stl,常用排序算法,常用拷贝和替换算法_第13张图片 

#include
using namespace std;

void print(int v)
{
	cout << v << ' ';
}

int main()
{
	vector v1;
	v1.push_back(1);
	v1.push_back(2);
	v1.push_back(9);
	v1.push_back(2);
	v1.push_back(4);
	
	for_each(v1.begin(),v1.end(),print);
	cout << endl;
	
	cout << "替换后" << endl;
	
	replace(v1.begin(),v1.end(),2,1000);
	
	for_each(v1.begin(),v1.end(),print);
	
	return 0;
}

 C++,stl,常用排序算法,常用拷贝和替换算法_第14张图片

replace_if

C++,stl,常用排序算法,常用拷贝和替换算法_第15张图片 

#include
using namespace std;

class print
{
public:
	void operator()(int v)
	{
		cout << v << ' ';
	}
};

class dayu2
{
public:
	bool operator()(int v)
	{
		return v > 2;
	}
};

int main()
{
	vector v1;
	v1.push_back(1);
	v1.push_back(2);
	v1.push_back(9);
	v1.push_back(2);
	v1.push_back(4);
	
	for_each(v1.begin(),v1.end(),print());
	cout << endl;
	
	cout << "替换后" << endl;
	
	replace_if(v1.begin(),v1.end(),dayu2(),999);
	
	for_each(v1.begin(),v1.end(),print());
	
	return 0;
}

 C++,stl,常用排序算法,常用拷贝和替换算法_第16张图片

swap

C++,stl,常用排序算法,常用拷贝和替换算法_第17张图片 交换的容器要是同种类型

#include
using namespace std;

class print
{
public:
	void operator()(int v)
	{
		cout << v << ' ';
	}
};

int main()
{
	vector v1;
	v1.push_back(1);
	v1.push_back(2);
	v1.push_back(9);
	v1.push_back(2);
	v1.push_back(4);
	
	vector v2;
	for(int i = 1; i <= 3; i++)
	{
		v2.push_back(i);
	}
	
	cout << "交换前" << endl;
	for_each(v1.begin(),v1.end(),print());
	cout << endl;
	for_each(v2.begin(),v2.end(),print());
	
	cout << endl << "交换后" << endl;
	swap(v1,v2);
	
	for_each(v1.begin(),v1.end(),print());
	cout << endl;
	for_each(v2.begin(),v2.end(),print());
	
	return 0;
}

C++,stl,常用排序算法,常用拷贝和替换算法_第18张图片

你可能感兴趣的:(C++STL,c++,排序算法,算法,stl,拷贝和替换算法)