您的位置:首页 > 其它

排序及相关算法

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());移除复制过程中相同的元素
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: