排序函数

1.std::sort (不稳定排序,时间复杂度为O(n log n)) 

std::vector<int> list;
std::sort(list.begin(),list.end()); // 默认升序 std::less<int>();
std::sort(list.begin(),list.end(),std::greater<int>()); // 降序

auto cmp = [](int x,int y){return x<y;};
std::sort(list.begin(),sort.end(),cmp); // 自定义比较函数

2.std::stable_sort(稳定排序,时间复杂度为O(n log n),排序时有相同的比较值元素,可以保证每次排序结果一致,代价是额外的空间复杂度)

 1 struct Obj
 2 {
 3   int index=0;
 4   std::string name;      
 5 }
 6 
 7 std::vector<Obj> objects;
 8 objects.emplace_back(2,"test2");
 9 objects.emplace_back(2,"test3");
10 objects.emplace_back(3,"test4");
11 
12 std::stable_sort(objects.begin(),objects.end(),[](const auto &obj1,const auto &obj2){return obj1.index < obj2.index;}):

 

3.std::partial_sort(部分排序,时间复杂度为O(n log n),不稳定排序)

posted @ 2024-07-03 15:13  北冥没有鱼  Views(9)  Comments(0Edit  收藏  举报