21xrx.com
2024-12-22 23:00:57 Sunday
登录
文章检索 我的文章 写文章
C++中sort排序规则详解
2023-07-08 02:23:14 深夜i     --     --
C++ sort 排序规则

在C++中,sort()函数是非常实用的排序函数,它能够帮助我们快速对一组数据进行排序。然而,sort()函数中有一些参数我们需要注意,因为它会影响排序的规则。

首先,sort()函数的第一个参数是需要排序的数组或者vector,而第二个参数可以指定排序规则。排序规则可以通过传递一个自定义的比较函数来实现。比较函数的格式为bool functionName(type a, type b),其中type是需要排序数组/向量中元素的类型。如果按升序排序,返回a < b;如果按降序排序,则返回a > b。下面我们将详细介绍sort()函数中的排序规则。

1.升序排序

默认情况下,sort()函数是按升序排序的。这意味着如果sort()函数没有第二个参数,那么它将根据元素类型的默认比较函数对数组/向量进行排序。例如,如果比较的是int类型的元素,那么按数字大小升序排序。

2.降序排序

如果要对数组/向量进行降序排序,需要传递一个自定义的比较函数作为sort()函数的第二个参数。为了使sort()函数按降序方式对数组/向量进行排序,比较函数应该返回a > b而不是a

3.自定义排序规则

除了升序和降序排序以外,sort()函数还可以根据我们的需要进行自定义排序。比如我们有一个学生信息数组,按照学生成绩升序排列。这种情况下,我们需要传递一个自定义的比较函数来实现。下面给出一个示例:


struct student

  int score;

  string name;

;

bool cmp(student a, student b)

  return a.score < b.score;

int main() {

  student s[3];

  s[0] = 80;

  s[1] = "Jerry";

  s[2] = 70;

  sort(s, s + 3, cmp);

  for(int i = 0; i < 3; i++) {

    cout << s[i].name << " " << s[i].score << endl;

  }

}

在这个例子中,我们定义了一个名为student的结构体,其中包含两个属性:score 和 name。我们使用自定义的cmp()函数来对学生元素按照score来排序。sort()函数会在排序过程中多次调用cmp()函数,直到学生数组按score值完全升序排序为止。

总之,在使用sort()函数时,不仅要选择合适的数据类型,还要注意传递一个合适的排序规则参数。只有当我们正确理解了sort()函数中的排序规则,我们才能真正深入了解C++中的排序技巧和应用场景。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复