排序及相关算法

一、sort

sort(v1.begin(),v1.end());//从小到大

sort(v1.begin(),v1.end(),greater<int>());//从大到小

stable_sort 比sort更稳定可靠

二、部分排序

parttial_sort(v1.begin(),v1.begin()+5,v1.end());//整个数组的最小的从小到大,排在v1begin()到v1.end()

partial_sort(v1.begin(),v1.begin()+5,v1.end(),greater<int>());//整个数组最大的排在v1.begin(),v1.end()

partial_sort_copy(dim,dim+9,v3.begin(),v3.end());

random_shuffle(dim, dim + 12);//随机排序
nth_element(dim, dim + 4, dim + 12);//将第4个元素放在第4个位置
cout << endl;
copy(dim, dim + 12, ostream_iterator<int>(cout, ","));

三、堆操作

make_heap(v1.begin(), v1.end());生成堆

pop_heap(v1.begin(), v1.end());将堆顶元素移动到序列的尾部,剩余元素重新生成堆,v1.pos_back()删除堆顶元素

v1.push_back(13.2);
push_heap(v1.begin(), v1.end());加入元素,生成堆

sort_heap(v1.begin(), v1.end());堆元素进行排序

四、集合的合并

merge(l1.begin(), l1.end(), s1.begin(), s1.end(), ostream_iterator<int>(cout, ","));合并两个有序的集合

set_difference(l1.begin(), l1.end(), s1.begin(), s1.end(), ostream_iterator<int>(cout, ","));//差集,返回l1中除了公共元素的部分

set_intersection(l1.begin(), l1.end(), s1.begin(), s1.end(), ostream_iterator<int>(cout, ","));交集

set_union(l1.begin(), l1.end(), s1.begin(), s1.end(), ostream_iterator<int>(cout, ","));并集,相同元素唯一化

五。搜索

bool binary_search(v1.begin(),v1.end(),4);存在返回true,否则返回false ,搜索前序列必须有序

includes(l1.begin(),l1.end(),s1.begin(),s1.end());是否包含

lower_bound(l1.begin(),l1.end(),8);大于等于8的第一元素

upper_bound(l1.begin(),l1.end(),8);大于8的第一元素

六、删除

remove(l1.begin(),l1.end(),3);删除迭代器范围内所有的3

remove_if(l1.begin(),l1.end(),ifeven);条件为真就移除

remove_copy(l1.begin(),l1.end(),l2.begin(),4);

remove_copy_if(l1.begin(),l1.end(),l2.begin(),ifeven);

unique(l1.begin(),l1.end());删除相同元素

unique_copy(l1.begin(),l1.end());移除复制过程中相同的元素

转载于:https://www.cnblogs.com/ranranblog/p/5636112.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值