上合建设网站企业,培训机构招生方案,百度指数排名明星,12网站免费建站前言
std::sort()是C标准库提供了一个模板函数#xff0c;这个函数用于对给定范围内的元素进行排序#xff0c;默认情况下#xff0c;它使用元素类型的 操作符来确定元素的顺序。如果元素类型不支持 操作符#xff0c;或者你需要按照不同于 的顺序来排序标准库提供了一个模板函数这个函数用于对给定范围内的元素进行排序默认情况下它使用元素类型的 操作符来确定元素的顺序。如果元素类型不支持 操作符或者你需要按照不同于 的顺序来排序你可以提供一个自定义的比较函数或者比较函数对象或lambda。
具体使用
升序
sort默认是升序排列
#include algorithm
#include vector
#include iostream
int main()
{ std::vectorint vec {4, 1, 3, 5, 2}; // 使用 std::sort 对 vec 进行排序 std::sort(vec.begin(), vec.end()); // 打印排序后的 vec for(int num : vec) { std::cout num ; } return 0;
}降序
sort如果需要实现降序排列则需要自己实现一个比较器函数对象或lambda
#include algorithm
#include vector
#include iostream
bool compare(int a, int b)
{ // 降序排序 return a b;
} int main()
{ std::vectorint vec {4, 1, 3, 5, 2}; std::sort(vec.begin(), vec.end(), compare); for(int num : vec) { td::cout num ; } return 0;
}扩展
如果想实现对自定义数据类型进行排序则需要自己实现比较器
#include algorithm
#include vector
#include iostream struct people
{std::string name;int age;
}bool compare(people a, people b)
{ // 降序排序 return a.age b.age;
} int main()
{ std::vectorpeople vec;for(auto i 1; i 5; i){people p;p.age i;p.name asd std::to_string(i);}std::sort(vec.begin(), vec.end(), compare); sfor(people p : vec) { std::cout p.name p.age std::end;} return 0;
}注意事项
std::sort 并不保证使用特定的排序算法但它通常实现为高效的排序算法如快速排序、堆排序或归并排序等。排序操作是就地进行的不需要额外的存储空间来存储排序后的序列也就是说空间复杂度为O(1)排序操作的复杂度通常是 O(n log n)其中 n 是要排序的元素数量具体情况取决于比较器