|
MSTL 1.4.0
A Modern C++ Library with extended functionality, web components, and utility libraries
|
MSTL排序算法的实现 更多...
函数 | |
| template<typename Iterator, typename Compare, enable_if_t< is_ranges_input_iter_v< Iterator >, int > = 0> | |
| bool | is_sorted (Iterator first, Iterator last, Compare comp) |
| 检查范围是否已排序 | |
| template<typename Iterator> | |
| bool | is_sorted (Iterator first, Iterator last) |
| 检查范围是否已排序 | |
| template<typename Iterator, typename Compare, enable_if_t< is_ranges_input_iter_v< Iterator >, int > = 0> | |
| Iterator | is_sorted_until (Iterator first, Iterator last, Compare comp) |
| 查找首个破坏排序的元素 | |
| template<typename Iterator> | |
| Iterator | is_sorted_until (Iterator first, Iterator last) |
| 查找首个破坏排序的元素 | |
| template<typename Iterator, typename Compare, enable_if_t< is_ranges_rnd_iter_v< Iterator >, int > = 0> | |
| void | merge_sort (Iterator first, Iterator last, Compare comp) |
| 归并排序 | |
| template<typename Iterator> | |
| void | merge_sort (Iterator first, Iterator last) |
| 归并排序 | |
| template<typename Iterator, typename Compare, enable_if_t< is_ranges_rnd_iter_v< Iterator >, int > = 0> | |
| void | partial_sort (Iterator first, Iterator middle, Iterator last, Compare comp) |
| 部分排序 | |
| template<typename Iterator> | |
| void | partial_sort (Iterator first, Iterator middle, Iterator last) |
| 部分排序 | |
| template<typename Iterator1, typename Iterator2, typename Compare, enable_if_t< is_ranges_input_iter_v< Iterator1 > &&is_ranges_rnd_iter_v< Iterator2 >, int > = 0> | |
| Iterator2 | partial_sort_copy (Iterator1 first, Iterator1 last, Iterator2 result_first, Iterator2 result_last, Compare comp) |
| 部分排序并复制到另一个范围 | |
| template<typename Iterator1, typename Iterator2> | |
| Iterator2 | partial_sort_copy (Iterator1 first, Iterator1 last, Iterator2 result_first, Iterator2 result_last) |
| 部分排序并复制 | |
| template<typename Iterator, typename Compare, enable_if_t< is_ranges_rnd_iter_v< Iterator >, int > = 0> | |
| void | insertion_sort (Iterator first, Iterator last, Compare comp) |
| 插入排序 | |
| template<typename Iterator> | |
| void | insertion_sort (Iterator first, Iterator last) |
| 插入排序 | |
| template<typename Iterator, typename Compare, enable_if_t< is_ranges_rnd_iter_v< Iterator >, int > = 0> | |
| void | introspective_sort (Iterator first, Iterator last, int depth_limit, Compare comp) |
| 内省排序 | |
| template<typename Iterator> | |
| void | introspective_sort (Iterator first, Iterator last, int depth_limit) |
| 内省排序 | |
| template<typename Iterator, typename Compare, enable_if_t< is_ranges_rnd_iter_v< Iterator >, int > = 0> | |
| void | quick_sort (Iterator first, Iterator last, Compare comp) |
| 快速排序 | |
| template<typename Iterator> | |
| void | quick_sort (Iterator first, Iterator last) |
| 快速排序 | |
| template<typename Iterator, typename Compare, enable_if_t< is_ranges_rnd_iter_v< Iterator >, int > = 0> | |
| void | sort (Iterator first, Iterator last, Compare comp) |
| 标准排序 | |
| template<typename Iterator> | |
| void | sort (Iterator first, Iterator last) |
| 标准排序 | |
| template<typename Iterator, typename Compare, enable_if_t< is_ranges_rnd_iter_v< Iterator >, int > = 0> | |
| void | nth_element (Iterator first, Iterator nth, Iterator last, Compare comp) |
| 第n个元素选择 | |
| template<typename Iterator> | |
| void | nth_element (Iterator first, Iterator nth, Iterator last) |
| 第n个元素选择 | |
MSTL排序算法的实现
| void insertion_sort | ( | Iterator | first, |
| Iterator | last ) |
| void insertion_sort | ( | Iterator | first, |
| Iterator | last, | ||
| Compare | comp ) |
插入排序
| Iterator | 随机访问迭代器类型 |
| Compare | 比较函数类型 |
| first | 范围起始 |
| last | 范围结束 |
| comp | 比较函数对象 |
简单的稳定排序算法,适用于小规模或基本有序的数据。
将每个元素插入到前面已排序子序列的正确位置。
引用了 _INNER, _MSTL , 以及 copy_backward().
被这些函数引用 insertion_sort(), nth_element() , 以及 sort().
| void introspective_sort | ( | Iterator | first, |
| Iterator | last, | ||
| int | depth_limit ) |
内省排序
| Iterator | 随机访问迭代器类型 |
| first | 范围起始 |
| last | 范围结束 |
| depth_limit | 递归深度限制 |
引用了 _MSTL , 以及 introspective_sort().
| void introspective_sort | ( | Iterator | first, |
| Iterator | last, | ||
| int | depth_limit, | ||
| Compare | comp ) |
内省排序
| Iterator | 随机访问迭代器类型 |
| Compare | 比较函数类型 |
| first | 范围起始 |
| last | 范围结束 |
| depth_limit | 递归深度限制 |
| comp | 比较函数对象 |
结合了快速排序、堆排序和插入排序的混合排序算法:
引用了 _MSTL, introspective_sort(), lomuto_partition(), median() , 以及 partial_sort().
被这些函数引用 introspective_sort() , 以及 introspective_sort().
| bool is_sorted | ( | Iterator | first, |
| Iterator | last ) |
检查范围是否已排序
| Iterator | 迭代器类型 |
| first | 范围起始 |
| last | 范围结束 |
引用了 _MSTL , 以及 is_sorted().
| bool is_sorted | ( | Iterator | first, |
| Iterator | last, | ||
| Compare | comp ) |
检查范围是否已排序
| Iterator | 迭代器类型 |
| Compare | 比较函数类型 |
| first | 范围起始 |
| last | 范围结束 |
| comp | 比较函数对象 |
检查范围 [first, last) 是否按照比较函数 comp 排序。
被这些函数引用 is_sorted().
| Iterator is_sorted_until | ( | Iterator | first, |
| Iterator | last ) |
查找首个破坏排序的元素
| Iterator | 迭代器类型 |
| first | 范围起始 |
| last | 范围结束 |
引用了 _MSTL , 以及 is_sorted_until().
| Iterator is_sorted_until | ( | Iterator | first, |
| Iterator | last, | ||
| Compare | comp ) |
查找首个破坏排序的元素
| Iterator | 迭代器类型 |
| Compare | 比较函数类型 |
| first | 范围起始 |
| last | 范围结束 |
| comp | 比较函数对象 |
在范围 [first, last) 中查找第一个使得序列不满足排序条件的位置。
被这些函数引用 is_sorted_until().
| void merge_sort | ( | Iterator | first, |
| Iterator | last ) |
| void merge_sort | ( | Iterator | first, |
| Iterator | last, | ||
| Compare | comp ) |
归并排序
| Iterator | 随机访问迭代器类型 |
| Compare | 比较函数类型 |
| first | 范围起始 |
| last | 范围结束 |
| comp | 比较函数对象 |
使用分治策略的稳定排序算法:
引用了 _MSTL, distance(), inplace_merge() , 以及 merge_sort().
被这些函数引用 merge_sort() , 以及 merge_sort().
| void nth_element | ( | Iterator | first, |
| Iterator | nth, | ||
| Iterator | last ) |
| void nth_element | ( | Iterator | first, |
| Iterator | nth, | ||
| Iterator | last, | ||
| Compare | comp ) |
第n个元素选择
| Iterator | 随机访问迭代器类型 |
| Compare | 比较函数类型 |
| first | 范围起始 |
| nth | 目标位置(0-based) |
| last | 范围结束 |
| comp | 比较函数对象 |
重新排列范围 [first, last),使得位置 nth 的元素是排序后的正确元素, 并且 nth 之前的元素都不大于它,之后的元素都不小于它。 使用快速选择算法实现。
引用了 _MSTL, insertion_sort(), lomuto_partition() , 以及 median().
被这些函数引用 nth_element().
| void partial_sort | ( | Iterator | first, |
| Iterator | middle, | ||
| Iterator | last ) |
| void partial_sort | ( | Iterator | first, |
| Iterator | middle, | ||
| Iterator | last, | ||
| Compare | comp ) |
部分排序
| Iterator | 随机访问迭代器类型 |
| Compare | 比较函数类型 |
| first | 范围起始 |
| middle | 部分排序的边界 |
| last | 范围结束 |
| comp | 比较函数对象 |
对范围 [first, last) 进行部分排序,使得 [first, middle) 包含整个范围中最小的元素, 并且这个子范围是已排序的。使用堆排序算法实现。 适用只需要前k个最小(或最大)元素的情况。
引用了 _INNER, _MSTL, make_heap() , 以及 sort_heap().
被这些函数引用 introspective_sort() , 以及 partial_sort().
| Iterator2 partial_sort_copy | ( | Iterator1 | first, |
| Iterator1 | last, | ||
| Iterator2 | result_first, | ||
| Iterator2 | result_last ) |
部分排序并复制
| Iterator1 | 输入迭代器类型 |
| Iterator2 | 随机访问迭代器类型 |
| first | 输入范围起始 |
| last | 输入范围结束 |
| result_first | 输出范围起始 |
| result_last | 输出范围结束 |
引用了 _MSTL , 以及 partial_sort_copy().
| Iterator2 partial_sort_copy | ( | Iterator1 | first, |
| Iterator1 | last, | ||
| Iterator2 | result_first, | ||
| Iterator2 | result_last, | ||
| Compare | comp ) |
部分排序并复制到另一个范围
| Iterator1 | 输入迭代器类型 |
| Iterator2 | 随机访问迭代器类型 |
| Compare | 比较函数类型 |
| first | 输入范围起始 |
| last | 输入范围结束 |
| result_first | 输出范围起始 |
| result_last | 输出范围结束 |
| comp | 比较函数对象 |
从输入范围中选取最小的元素,部分排序后复制到输出范围。
引用了 _MSTL, adjust_heap(), make_heap() , 以及 sort_heap().
被这些函数引用 partial_sort_copy().
| void quick_sort | ( | Iterator | first, |
| Iterator | last ) |
| void quick_sort | ( | Iterator | first, |
| Iterator | last, | ||
| Compare | comp ) |
快速排序
| Iterator | 随机访问迭代器类型 |
| Compare | 比较函数类型 |
| first | 范围起始 |
| last | 范围结束 |
| comp | 比较函数对象 |
经典的分治排序算法:
引用了 _MSTL, iter_swap(), lomuto_partition() , 以及 quick_sort().
被这些函数引用 quick_sort() , 以及 quick_sort().
| void sort | ( | Iterator | first, |
| Iterator | last ) |
| void sort | ( | Iterator | first, |
| Iterator | last, | ||
| Compare | comp ) |