C++ 标准库中的 'algorithm' 库是一个头文件,包含了一系列用于各种常见算法操作的函数,如排序、查找、合并、删除、替换等。这些函数都是使用模板实现的,可以适用于不同类型的数据结构。

'algorithm' 库中包含的函数有:

  1. 排序函数:'sort'、'stable_sort'、'partial_sort'、'nth_element' 等。
  2. 查找函数:'find'、'find_if'、'binary_search'、'lower_bound'、'upper_bound' 等。
  3. 数值函数:'accumulate'、'inner_product'、'partial_sum'、'adjacent_difference' 等。
  4. 修改函数:'copy'、'copy_if'、'copy_n'、'fill'、'fill_n'、'replace'、'replace_if'、'swap' 等。
  5. 移除函数:'remove'、'remove_if'、'unique' 等。
  6. 合并函数:'merge'、'inplace_merge' 等。
  7. 堆函数:'make_heap'、'push_heap'、'pop_heap'、'sort_heap' 等。
  8. 其他函数:'min'、'max'、'min_element'、'max_element'、'reverse'、'rotate' 等。

使用 'algorithm' 库可以大大简化我们的代码,提高开发效率。

排序函数用法

以下列举所有排序函数的具体用法:

1. 'sort'

函数原型:'void sort (RandomAccessIterator first, RandomAccessIterator last);'

功能:对 '[first, last)' 区间内的元素进行升序排序。

示例代码:

int arr[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};
sort(arr, arr + 10);
// 数组 arr 中的元素变为 {1, 1, 2, 3, 3, 4, 5, 5, 6, 9}

2. 'stable_sort'

函数原型:'void stable_sort (RandomAccessIterator first, RandomAccessIterator last);'

功能:对 '[first, last)' 区间内的元素进行升序排序,保证相等元素的相对位置不变。

示例代码:

struct Student {
    string name;
    int age;
};
bool cmp(Student a, Student b) {
    return a.age < b.age;
}
Student stu[] = {{"Tom", 18}, {"Jack", 20}, {"Lucy", 18}, {"Mary", 19}};
stable_sort(stu, stu + 4, cmp);
// 结构体数组 stu 中的元素按照年龄升序排序,相同年龄的按照原来的顺序

3. 'partial_sort'

函数原型:'void partial_sort (RandomAccessIterator first, RandomAccessIterator middle, RandomAccessIterator last);'

功能:对 '[first, last)' 区间内的元素进行部分排序,保证前 middle-first 个元素是整个序列中最小的 middle-first 个元素。

示例代码:

int arr[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};
partial_sort(arr, arr + 5, arr + 10);
// 数组 arr 中前 5 个元素变为 {1, 1, 2, 3, 3},其余元素的顺序不确定

4. 'nth_element'

函数原型:'void nth_element (RandomAccessIterator first, RandomAccessIterator nth, RandomAccessIterator last);'

功能:对 '[first, last)' 区间内的元素进行部分排序,保证第 n 个元素是整个序列中第 n 个最小的元素,'[first, nth)' 区间内的元素小于等于第 n 个元素,'(nth, last)' 区间内的元素大于等于第 n 个元素。

示例代码:

int arr[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};
nth_element(arr, arr + 5, arr + 10);
// 数组 arr 中第 5 个元素为 3,[arr, arr+5) 区间内的元素小于等于 3,(arr+5, arr+10) 区间内的元素大于等于 3
C++ 算法库:排序、查找、合并、删除等操作

原文地址: https://www.cveoy.top/t/topic/jJik 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录