sort用法

sort用法

 sort基础

  #include <algorithm>
  sort(first_pointer,first_pointer+n,cmp);

sort升级

bool cmp1(int a,int b)//int为数组数据类型
{
    return a>b;//降序排列
    //return a<b;//默认的升序排列
}
sort(A,A+100,cmp1);

//情况二:结构体排序
Student Stu[100];
bool cmp2(Student a,Student b)
{
    return a.id>b.id;//按照学号降序排列
    //return a.id<b.id;//按照学号升序排列
}
sort(Stu,Stu+100,cmp2);
  if(G[u][i]!=fa)
      {
          node.push_back(dfs(G[u][i],u));
      }
      sort(node.begin(),node.end());  //额,还有这种sort排序

 

### C++ 中 `sort()` 函数的使用方法详解 `sort()` 函数是 C++ 标准库 `<algorithm>` 中的重要工具之一,用于对容器或数组中的元素进行排序。该函数具有灵活的接口,支持默认排序和自定义排序方式,适用于多种数据结构和排序需求。 #### 基本用法 `sort()` 函数的基本形式为: ```cpp void sort(RandomAccessIterator first, RandomAccessIterator last); ``` 其中 `first` 和 `last` 分别表示排序的起始和结束位置(不包含 `last`)。默认情况下,`sort()` 会按照升序对元素进行排序。例如,对一个整型数组进行排序可以这样实现: ```cpp #include <algorithm> #include <iostream> int main() { int arr[] = {5, 2, 9, 1, 5, 6}; int n = sizeof(arr) / sizeof(arr[0]); std::sort(arr, arr + n); for (int i = 0; i < n; ++i) { std::cout << arr[i] << " "; } return 0; } ``` 上述代码中,`sort(arr, arr + n)` 将数组 `arr` 中的元素按照升序排列[^2]。 #### 自定义排序规则 `sort()` 函数还支持自定义排序规则,通过传递一个比较函数作为第三个参数。比较函数的定义形式如下: ```cpp bool compare(const Type& a, const Type& b); ``` 如果希望将数组按降序排列,可以定义一个简单的比较函数: ```cpp bool cmp(int a, int b) { return a > b; } int main() { int arr[] = {5, 2, 9, 1, 5, 6}; int n = sizeof(arr) / sizeof(arr[0]); std::sort(arr, arr + n, cmp); for (int i = 0; i < n; ++i) { std::cout << arr[i] << " "; } return 0; } ``` 上述代码中,`cmp` 函数用于指定降序排序规则,`sort(arr, arr + n, cmp)` 会按照从大到小的顺序排列数组元素[^3]。 #### 对结构体进行排序 当需要对结构体进行排序时,可以通过定义比较函数来实现。例如,对一个包含姓名和成绩的学生结构体进行排序: ```cpp #include <algorithm> #include <iostream> #include <cstring> struct Student { char name[10]; int score; }; bool cmp(Student a, Student b) { if (a.score != b.score) { return a.score > b.score; } else { return std::strcmp(a.name, b.name) < 0; } } int main() { Student stus[] = { {"li", 86}, {"wei", 83}, {"zhao", 83}, {"zhang", 99} }; int n = sizeof(stus) / sizeof(stus[0]); std::sort(stus, stus + n, cmp); for (int i = 0; i < n; ++i) { std::cout << stus[i].name << " " << stus[i].score << std::endl; } return 0; } ``` 在上述代码中,`cmp` 函数用于实现先按成绩降序排序,成绩相同则按姓名字典序升序排列的功能[^4]。 #### 注意事项 - `sort()` 函数是不稳定的排序算法,即相同元素之间的相对顺序在排序后可能会发生变化。如果需要保持相同元素的相对顺序,可以使用 `stable_sort()` 函数。 - `sort()` 函数的排序效率较高,通常基于快速排序或混合排序算法实现,适用于大多数排序场景。 - 使用 `sort()` 时需要包含 `<algorithm>` 头文件,否则会导致编译错误[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值