常用排序算法

merge 算法

容器元素合并,并存储到另一个容器中,这两个容器必须也是有序的
目标容器必须resize()!!

merge(iterator beg1,iterator end1,iterator beg2,iterator end2,iterator target_beg)

@param beg1 开始迭代器1
@param end1 结束迭代器1
@param beg2 开始迭代器2
@param end2 结束迭代器2
@param target 目标容器起始迭代器

sort 算法

这个算法不知道干嘛的回去背英语吧

sort(iterator beg,iterator end)

sort(iterator beg,iterator end,_callback) 

@param beg 开始迭代器
@param end 结束迭代器
@param _callback 回调函数或者谓词(返回类型bool的函数对象)

random_shuffle 洗牌算法

就是重新给数组随机排序

如果没有使用srand((unsigned int)time(NULL)),每一次运行结束后的结果都是一样的

random_shuffle (iterator beg,iterator end)

@param beg 开始迭代器
@param end 结束迭代器

代码示例

/*************************************************************************
	> File Name: main.cpp
	> Author: 
	> Mail: 
	> Created Time: 2020年01月01日 星期三 13时51分56秒
 ************************************************************************/

# include<iostream>
# include <algorithm>
# include <time.h>
# include <vector>
using namespace std;

void test01()
{
    vector<int>v;
    for(int i=0;i<10;i++)
    {
        v.push_back(i);
    }
    srand((unsigned int)(time(NULL)));  //没有这个的话每一次重新运行生成的随即数组都是一样的
    random_shuffle(v.begin(),v.end());
    for_each(v.begin(),v.end(),[](int val){cout<<val<<"  ";});
}
int main()
{
    test01();
    return 0;
}

洗牌.jpg

reverse 翻转算法

翻转数组顺序

reverse(iterator beg,iterator end)

@param beg 开始迭代器
@param end 结束迭代器

常用拷贝替换算法

copy算法

将容器内指定范围的元素拷贝到另一容器中
目标容器必须resize()!!


copy(iterator beg,iterator end,iteartor target_beg)

@param beg 开始迭代器
@param end 结束迭代器
@param target_beg 目标开始迭代器
小技巧

# include <iterator>
copy(iterator beg,iterator end,ostream_iterator<T>) //打印数据 相当于把数据复制到输出流中进行输出

replace 算法


replace(iterator beg,iterator end,old_value,new_value)

replace_if(iterator beg,iterator end,_callback,value)

@param beg 开始迭代器
@param end 结束迭代器
@param old_value 旧值
@param new_value 新值
@_callback一元谓词

swap算法

交换两个容器内的元素

swap(c1,c2)

@param 容器1
@param 容器2