STL中排序算法
来源:互联网 发布:linux如何下载软件包 编辑:程序博客网 时间:2024/05/14 16:52
[1] push_heap:默认为大根堆,主要是上滤操作。
[2] make_heap:创建堆,默认构建大根堆。他的实现基于这样一个简单的想法:将二叉树中的每个仅二层的子树都构成堆,那么整个数据集的布局几乎即可以满足堆的定义。
[3] pop_heap:将已构成堆的迭代器区间中最大值元素移到区间的最后元素位置。原来的最后元素调整为根结点元素后,再对除最后一个元素之外的区间调整。
[4] sort_heap:堆排序,时间复杂度O(nlog2n)。内部通过一个while循环调用pop_heap函数实现。
[5] is_heap:是否为堆。
[6] partial_sort:局部排序,内部使用堆排序来实现,因此时间复杂度O(nlog2n)。原型void partial_sort(RandomAccessIterator first, RandomAccessIterator middle, RandomAccessIteratorlast);排序结果中只有[first,middle)中的元素被排序。
[7] partial_sort_copy:局部排序复制,与partial_sort的不同在于将排序结果放到了制定位置。
[8] sort:时间复杂度最坏情况下意识O(nlog2n),内部实现为对快排的一种改进。较早起的快排,即标准C++的qsort函数所使用的排序算法更好,平均时间复杂度为O(nlog2n)。
[9] merge:归并,将两个具有相同升降方向的有序序列合并成一个有序序列。
[10] inplace_merge:内部归并,将一个序列内部两个升降相同的子序列进行排序合并。
[11] stable_sort:稳定排序,当分配缓冲区不成功时调用inplace_stable_sort函数折半递归分割为更小的区间,当元素个数不大于15时,就直接用插入排序对小区间分别排序,然后用merge_without_buffer函数合并。
[12] is_sorted:是否有序。
[13] nth_element:仅排序第nth个元素,利用快排中的unguared_paritition函数。
[14] lower_bound:用于在有序的区间中查找首个不小于某个值得元素(折半)。
[15] upper_bound:用于在有序区间中查找首个大于某值得元素。
[16] equal_range:等价区间,用折半的方法查找第一个和最后一个可以插入某值得元素,这些元素可以构成所谓的等价区间。实现:内部一个while循环用折半方法分析出可以插入的元素在左区间还是右区间,最后用lower_bound和upper_bound返回第一个和最后一个可以插入的元素。
[17] binary_search:折半搜索,其中调用了lower_bound函数。
[18] include子集合:检测一个有序区间是否包含另一个有序区间。
[19] set_union:对有序的两个区间集合求并。当一个值在一个区间出现m次,另一个区间出现n次,则在并集中出现max{m, n}次。
[20] set_intersection:对有序的两个区间集合求交。当一个值在一个区间出现m次,另一个区间出现n次,则在交集中出现min{m, n}次。
[21] set_difference:求两个有序区间元素集合的差,所有属于区间1而不属于区间2的元素。当一个值在第一个区间出现m次,第二个区间出现n次,则在差集中出现max{m-n, 0}次。
[22] set_symmetric_difference:集合求异。
[23] min:最小值。
[24] max:最大值。
[25] min_element:区间中最小元素。
[26] max_element:区间中最大元素。
[27] lexicographical_compare:字典比较。
[28] next_permutation:下一排列组合,对区间元素进行一次组合排列,使之字典顺序增大。
[29] pre_permutation:上一排列组合,对区间元素进行一次组合排列,使之字典顺序减小。
- STL中排序算法
- STL中排序算法介绍
- STL中排序算法函数所用技巧
- STL中各种排序算法的区别
- c++中STL排序算法程序
- STL中排序相关算法选择
- STL中list的排序算法
- STL中排序算法的选择
- c++中STL排序算法程序
- STL 中 算法的遍历和排序
- STL中sort排序算法原理
- STL排序算法
- STL排序算法
- STL 排序算法
- STL之排序算法
- STl中的排序算法
- STL 排序算法
- STL算法(Algorithms):排序
- UVA - 550 Multiplying by Rotation
- Hive 安装配置
- @ResponseBody注解
- MSbuild failure: error CS0246: The type or namespace name 'DataLoader_Accessor' could not be found
- Intellij Idea 12 生成serialVersionUID的方法
- STL中排序算法
- [Android]volley源码分析
- php中获取系统信息的方法
- Devexpress TreeList CheckBox 复选框
- Spring基于注解TestContext 测试框架使用详解
- iOS推送
- 仿真实验学习法-理综实验轻松过关
- 小波变换轻松入门(我的理解说明)
- java重构学习6:移除对参数的赋值(Remove Assignments to Parameters)