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

目录

1.常用排序算法

sort

random_shuffle

merge

reverse

2.常用拷贝和替换算法

copy

replace

replace_if

swap


1.常用排序算法

sort

默认从小到大排序 

#include<bits/stdc++.h>
using namespace std;

int main()
{
	vector<int> 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<int>());
	//降序排列
	cout << endl;
	
	for(auto &ele:v)
	{
		cout << ele << ' ';
	}
	
	return 0;
}

random_shuffle

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

 

#include<bits/stdc++.h>
using namespace std;

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

int main()
{
	srand((unsigned int)time(NULL));
	
	vector<int> 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;
}

 

merge

 

#include<bits/stdc++.h>
using namespace std;

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

int main()
{
	vector<int> 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<int> v2;
	for(int i = 2; i <= 6; i += 2)
	{
		v2.push_back(i);
	}
	
	vector<int> 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;
}

 

reverse

 

#include<bits/stdc++.h>
using namespace std;

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

int main()
{
	vector<int> 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;
}

 

2.常用拷贝和替换算法

 

copy

#include<bits/stdc++.h>
using namespace std;

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

int main()
{
	vector<int> 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<int> v2;
	v2.resize(v1.size());
	copy(v1.begin(),v1.end(),v2.begin());
	
	cout << "复制后" << endl;
	for_each(v2.begin(),v2.end(),print);
	
	return 0;
}

replace

 

#include<bits/stdc++.h>
using namespace std;

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

int main()
{
	vector<int> 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;
}

 

replace_if

 

#include<bits/stdc++.h>
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<int> 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;
}

 

swap

 交换的容器要是同种类型

#include<bits/stdc++.h>
using namespace std;

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

int main()
{
	vector<int> v1;
	v1.push_back(1);
	v1.push_back(2);
	v1.push_back(9);
	v1.push_back(2);
	v1.push_back(4);
	
	vector<int> 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;
}

相关推荐

  1. C++ STL:拷贝算法替换算法

    2024-02-17 05:56:02       49 阅读
  2. 算法-桶排序

    2024-02-17 05:56:02       52 阅读
  3. 前端排序算法

    2024-02-17 05:56:02       26 阅读
  4. 排序算法汇总

    2024-02-17 05:56:02       24 阅读
  5. 10种排序算法简介

    2024-02-17 05:56:02       39 阅读
  6. [C语言] 排序算法

    2024-02-17 05:56:02       29 阅读
  7. 入门算法

    2024-02-17 05:56:02       62 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-17 05:56:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-17 05:56:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-02-17 05:56:02       82 阅读
  4. Python语言-面向对象

    2024-02-17 05:56:02       91 阅读

热门阅读

  1. docker的常用命令有哪些?

    2024-02-17 05:56:02       45 阅读
  2. Lua:面向对象/C之间的交互

    2024-02-17 05:56:02       49 阅读
  3. Docker安装和使用MySQL

    2024-02-17 05:56:02       46 阅读
  4. 假期2.13

    2024-02-17 05:56:02       47 阅读
  5. 软件系统架构演变:从单体应用到微服务

    2024-02-17 05:56:02       53 阅读
  6. 云原生之Docker镜像仓库

    2024-02-17 05:56:02       51 阅读
  7. Leetcode 739. 每日温度

    2024-02-17 05:56:02       53 阅读
  8. 5.8 BCC工具之mysqld_query.py解读

    2024-02-17 05:56:02       52 阅读