排序及相关算法
一、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());移除复制过程中相同的元素

浙公网安备 33010602011771号