• 【C++】常用排序算法


    0.前言

    在这里插入图片描述

    1.sort

    在这里插入图片描述
    在这里插入图片描述

    #include 
    using namespace std;
    
    
    // 常用排序算法 sort
    #include
    #include
    
    //利用仿函数 打印输出
    class myPrint
    {
    public:
    	void operator()(int val)
    	{
    		cout << val << " ";
    	}
    };
    
    //利用普通函数 打印输出
    void myPrint2(const int val) // const 可加可不加 因为形参不能改变实参
    {
    	cout << val << " ";
    }
    
    void test01()
    {
    	vector<int>v;
    	v.push_back(10);
    	v.push_back(50);
    	v.push_back(30);
    	v.push_back(20);
    	v.push_back(60);
    	v.push_back(10);
    
    	//默认从小到大 升序 排序
    	sort(v.begin(), v.end());
    
    	//打印输出
    	for_each(v.begin(), v.end(), myPrint());
    	cout << endl;
    
    	//利用内置函数 改变为降序
    	sort(v.begin(), v.end(), greater<int>());
    
    	//打印输出
    	for_each(v.begin(), v.end(), myPrint2);
    	cout << endl;
    }
    
    int main()
    {
    	test01();
    	cout << "------------------------" << endl;
    	//test02();
    	//cout << "------------------------" << endl << endl;
    	//test03();
    
    	//**************************************
    	system("pause");
    	return 0;
    } 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61

    在这里插入图片描述

    2.random_shuffle

    在这里插入图片描述
    在这里插入图片描述

    #include 
    using namespace std;
    
    
    // 常用排序算法 random_shuffle(洗牌算法,打乱顺序)
    #include
    #include
    #include
    
    //利用普通函数打印输出
    void myPrint(int val)
    {
    	cout << val << " ";
    }
    
    void test01()
    {
    	srand((unsigned int)time(NULL)); //随机种子 每次生成的乱序都不一样
    
    	vector<int>v;
    	for (int i = 0; i < 10; i++)
    	{
    		v.push_back(i);
    	}
    
    	//遍历打印
    	for_each(v.begin(), v.end(), myPrint);
    	cout << endl;
    
    	// 利用洗牌 算法 打乱顺序
    	random_shuffle(v.begin(), v.end());
    	
    	//遍历打印
    	for_each(v.begin(), v.end(), myPrint);
    	cout << endl;
    }
    
    int main()
    {
    	test01();
    	cout << "------------------------" << endl;
    	//test02();
    	//cout << "------------------------" << endl << endl;
    	//test03();
    
    	//**************************************
    	system("pause");
    	return 0;
    } 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49

    在这里插入图片描述

    3.merge

    在这里插入图片描述

    #include 
    using namespace std;
    
    
    // 常用排序算法 merge
    #include
    #include
    
    void myPrint(int val)
    {
    	cout << val << " ";
    }
    
    void test01()
    {
    	vector<int>v1;
    	vector<int>v2;
    
    	for (int i = 0; i < 10; i++)
    	{
    		v1.push_back(i);
    		v2.push_back(i + 1);
    	}
    
    	//目标容器
    	vector<int>vTarget;
    	//提前给目标容器分配空间
    	vTarget.resize(v1.size() + v2.size());
    
    	merge(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarget.begin());
    
    	for_each(vTarget.begin(), vTarget.end(), myPrint);
    	cout << endl;
    }
    
    int main()
    {
    	test01();
    	cout << "------------------------" << endl;
    	//test02();
    	//cout << "------------------------" << endl << endl;
    	//test03();
    
    	//**************************************
    	system("pause");
    	return 0;
    } 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

    在这里插入图片描述

    4.reverse

    在这里插入图片描述
    在这里插入图片描述

    #include 
    using namespace std;
    
    
    // 常用排序算法 reverse
    //反转 首尾互换
    #include
    #include
    
    void myPrint(int val)
    {
    	cout << val << " ";
    }
    
    void test01()
    {
    	vector<int>v;
    	
    	for (int i = 0; i < 10; i++)
    	{
    		v.push_back(i);
    	}
    
    	cout << "反转前:" << endl;
    	for_each(v.begin(), v.end(), myPrint);
    	cout << endl;
    
    	reverse(v.begin(), v.end());
    	cout << "反转后:" << endl;
    	for_each(v.begin(), v.end(), myPrint);
    	cout << endl;
    }
    
    int main()
    {
    	test01();
    	cout << "------------------------" << endl;
    	//test02();
    	//cout << "------------------------" << endl << endl;
    	//test03();
    
    	//**************************************
    	system("pause");
    	return 0;
    } 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    在这里插入图片描述

  • 相关阅读:
    fastjson到底做错了什么?为什么会被频繁爆出漏洞?
    计算机毕业设计ssm基于SSM框架的人力资源管理系统89kq5系统+程序+源码+lw+远程部署
    Node.js学习篇(一)利用fs引入文件和写入或修改文件以及path
    记录一次排查OOM记录 mac电脑
    JavaSE - 逻辑控制语句
    多个线程启动 ,等待全部执行完毕再搜集数据
    软件架构设计(九) 架构评估(复审)
    浅谈LockBit勒索病毒
    PermissionError: [WinError 5] 拒绝访问。OSError: [WinError 17] 系统无法将文件移到不同的磁盘驱动器。
    不同python包下的逻辑回归问题
  • 原文地址:https://blog.csdn.net/m0_48808835/article/details/132746690