📜  C++中的std :: partial_sort(1)

📅  最后修改于: 2023-12-03 15:14:03.040000             🧑  作者: Mango

C++中的 std::partial_sort

在 C++ 中,std::partial_sort 是一个函数模板,用于部分排序一个可迭代范围内的元素。其函数签名为:

template< class RandomIt >
void partial_sort( RandomIt first, RandomIt middle, RandomIt last );

template< class RandomIt, class Compare >
void partial_sort( RandomIt first, RandomIt middle, RandomIt last, Compare comp );

其中,第一个版本使用默认的 std::less 比较器进行排序,第二个版本可以使用自定义的比较器进行排序。

参数解释如下:

  • first, last: 定义要排序的范围 [first, last) ,其中 last 为指向范围中最后一个元素的下一位置的迭代器。
  • middle: 它指定元素被部分排序后的分界点。部分排序后,左边的元素小于等于右边的元素。

partial_sort 的时间复杂度为 O(nlogn)。

使用示例

下面是一个使用 std::partial_sort 的示例程序:

#include <iostream>
#include <algorithm>
#include <vector>

int main() {
    std::vector<int> v{ 2, 1, 5, 3, 4 };
    std::partial_sort(v.begin(), v.begin() + 3, v.end());

    for (auto i : v) {
        std::cout << i << " ";
    }
    std::cout << std::endl;

    return 0;
}

这段代码中,首先定义了一个 std::vector 类型的变量 v,它包含了一些整数。然后,使用 std::partial_sort 进行部分排序,将前三个最小的整数排在了 v 的最前面。最后,使用 for 循环输出 v 中的元素。

上述程序输出:

1 2 3 5 4
小结

std::partial_sort 是 C++ 中的一个有用的排序算法,可以用来部分排序给定范围内的元素。它的时间复杂度为 O(nlogn),是一个相对高效的排序算法。