C++ STL常用算法-63-排序算法_sort/random_shuffle

这篇来学习几个常见的排序相关的算法,前面我们学习过sort()这个排序算法,传入迭代器开始和结束,第三个参数如果不填,默认就是升序,如果第三个参数是一个仿函数,返回值类型是bool,也叫谓词,就按照你传入的规则进行排序。

 

1.排序相关的算法

sort   //对容器内元素进行排序
random_shuffle //洗牌,指定范围内元素随机调整次序
merge  //容器元素合并,并存储到另一个容器中
reverse  //反转指定范围的元素

 

2.sort

作用:给容器指定范围的元素进行排序

函数原型:sort(iterator begin, iterator end, _Pred);

一共三个参数,迭代器开始位置,迭代器结束位置,谓词,仿函数返回值类型是bool

下面来一个例子,先是默认排序,然后倒序

#include 
#include 
#include 
#include 
using namespace std;


class MyPrint
{
public:
    void operator()(int val)
    {
        cout << val << " ";
    }
};

class MySort
{
public:
    bool operator()(int v1, int v2)
    {
        return v1 > v2;
    }
};

void test01()
{
    vector v;
    v.push_back(10);
    v.push_back(30);
    v.push_back(40);
    v.push_back(20);
    v.push_back(50);

    // sort排序,默认升序
    sort(v.begin(), v.end());
    for_each(v.begin(), v.end(), MyPrint());
    cout << endl;

    // sort排序,降序
    vector v2;
    v2.push_back(10);
    v2.push_back(30);
    v2.push_back(40);
    v2.push_back(20);
    v2.push_back(50);

    sort(v2.begin(), v2.end(), MySort());
    for_each(v2.begin(), v2.end(), MyPrint());
    cout << endl;

}

int main()
{
    test01();
    system("pause");
    return 0;
}

验证结果

C++ STL常用算法-63-排序算法_sort/random_shuffle_第1张图片

 

3.random_shuffle

可以把指定范围内的元素随机打乱顺序

函数原型:random_shuffle(iterator beg, iterator end);

代码示例:

#include 
#include 
#include 
#include 
using namespace std;


class MyPrint
{
public:
    void operator()(int val)
    {
        cout << val << " ";
    }
};

void test01()
{
    vector v;
    v.push_back(10);
    v.push_back(30);
    v.push_back(40);
    v.push_back(20);
    v.push_back(50);

    // random_shuffle 打乱顺序
    random_shuffle(v.begin(), v.end());
    for_each(v.begin(), v.end(), MyPrint());
    cout << endl;

    random_shuffle(v.begin(), v.end());
    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();
    system("pause");
    return 0;
}

测试结果:

C++ STL常用算法-63-排序算法_sort/random_shuffle_第2张图片

这个结果,每次运行都不一样,5个数字随机打乱顺序

你可能感兴趣的:(C++学习笔记,c++,排序算法,随机打乱)