排序及相关算法
2016-07-02 21:49
162 查看
一、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());移除复制过程中相同的元素
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());移除复制过程中相同的元素
相关文章推荐
- ubuntu下安装软件命令apt-get与dpkg命令的区别
- mysql 优化
- 2016第27周六
- a标签获取属性值的问题
- HBase(0.96以上版本)过滤器Filter详解及实例代码
- Android帧布局示例
- poj 2892 Tunnel Warfare(树状数组+二分)
- 【笔记】JQuery中each的用法
- python regex
- 桥环形高分子的标度理论——链滴图像
- innerTHML的问题
- java中哈希表,Map,HashCode,Equals等介绍
- Maven实战、5.坐标与依赖
- JAVA设计模式之单例模式
- 我的第一篇博客,linux的中文输入设置
- 编程规范
- c++关闭io同步流
- cocos2dx 基础知识
- jquery mobile.js文件与jquery.js的插入顺序
- 如何进行源码阅读?