STL

范型编程_排序

2016-05-04  本文已影响34人  alamu

title: 范型编程_排序
date: 2016-05-02 12:05:57
categories: 算法 #文章文类
tags: [范型编程,STL,Geekband]


sort

partial_sort

binary_search

e.g  
v[] = {1,2,3,10,5} 
baniry_search(v.begin(), v.end(), 5) 
这里将会返回false

merge

基于排序集合的一些算法

includes

e.g
v1[]={1,2,3,4,5,6,7}
v2[]={1,4,6}
includes(v1.begin(),v1.end(),v2.begin(),v2.end()) 返回true

v1[]={1,2,3,4,5,6,7}
v2[]={4,9}
includes(v1.begin(),v1.end(),v2.begin(),v2.end()) 返回false

集合算法

set是STL中一种标准关联容器(vector,list,string,deque都是序列容器,而set,multiset,map,multimap是标准关联容器),它底层使用平衡的搜索树——红黑树实现,插入删除操作时仅仅需要指针操作节点即可完成,不涉及到内存移动和拷贝,所以效率比较高。

  1. 集合的交(set_intersection)
  2. 差(set_difference)
  3. 并(set_union)
  4. 对称差(set_symmetric_difference)

基于堆的算法

make_heap

v[]={1,4,200,8,100,5,7}
mak_heap(v,v+7)

mak_heap

push_heap

e.g
v[]={100,90,99,70,80,30,45,20,35,10,95}

make_heap(v,v+(v.size()-1), v+v.size()) //加入的是最后一个元素'95'

  1. make_heap后


2.实现流程

pop_heap

e.g
v[]={100,90,99,70, 25,30,45,20,35,10,95}

make_heap(v,v+(v.size()-1), v+v.size()) //加入的是最后一个元素'95'

  1. make_heap后


  2. pop_heap实现流程

sort_heap

上一篇下一篇

猜你喜欢

热点阅读