常用排序算法

shienh 2020年02月09日 207次浏览
#include <iostream>
#include <algorithm>
#include <vector>
#include <functional>

using namespace std;

//merge 将已经排序好的容器进行合并
void test1(){
    vector<int> v1;
    vector<int> v2;
    for(int i = 0; i < 10;i++){
        v1.push_back(i);
        v2.push_back(i+1);
    }

    vector<int>des;
    //目标容器要有容量
    des.resize(v1.size()+v2.size());
    merge(v1.begin(),v1.end(),v2.begin(),v2.end(),des.begin());
    for_each(des.begin(),des.end(),[](int val){cout<<val<<" ";});
    cout<<endl;
}

//sort 排序
void test2(){
    vector<int> v;
    for(int i = 0; i < 10; i++){
        v.push_back(i);
    }
    sort(v.begin(),v.end(),greater<int>());
    for_each(v.begin(),v.end(),[](int val){cout<<val<<" ";});
    cout<<endl;
}

//random_shuffle 对指定范围内的元素随机调整次序
void test3(){
    vector<int> v;
    for(int i = 0; i < 10;i++){
        v.push_back(i);
    }
    random_shuffle(v.begin(),v.end());
    for_each(v.begin(),v.end(),[](int val){cout<<val<<" ";});
    cout<<endl;
}

//reverse 反转指定范围元素
void test4(){
    vector<int> v;
    for(int i = 0; i < 10;i++){
        v.push_back(i);
    }
    reverse(v.begin(),v.end());
    for_each(v.begin(),v.end(),[](int val){cout<<val<<" ";});
    cout<<endl;
}

int main(int argc, char *argv[])
{
    test1();
    test2();
    test3();
    test4();
    return 0;
}