21xrx.com
2024-06-03 01:05:54 Monday
登录
文章检索 我的文章 写文章
C++如何进行排序?
2023-07-11 14:34:06 深夜i     --     --
C++ 排序 算法 数组 STL

在C++中,排序是常见的操作,它可以帮助我们将数据按照某个规则进行排列。C++提供了许多排序算法,每个算法都有其独特的性能和适用场景。

1. 内置排序函数

C++中的STL库提供了sort函数,可以对数组或容器进行排序。

`sort(start_address, end_address,compare function);`

其中,start_address和end_address是要排序的数组或容器的起始地址和结束地址。compare function是用来确定排序规则的函数。

例如,以下代码展示了如何对数组进行升序排序:


int arr[] = 3;

int n = sizeof(arr) / sizeof(arr[0]);

sort(arr, arr + n);

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

  cout << arr[i] << " ";

}

输出为:1 2 3 4 5。

2. 内置排序容器

除了数组,C++还提供了许多容器,例如vector、list、set等,这些容器也拥有自己的排序函数。

以vector为例,以下代码展示了如何对vector进行降序排序:


vector<int> vec = 2;

sort(vec.rbegin(), vec.rend());

for (auto i : vec)

  cout << i << " ";

其中,rbegin()和rend()函数是vector中的函数,分别返回反向迭代器的起始地址和结束地址。

输出为:9 8 7 4 2。

3. 自定义排序函数

有时候,内置的排序函数无法满足我们的需求,这时候可以自定义排序函数来进行排序。

例如,以下代码展示了如何对结构体按照年龄从大到小排序:


struct Person

  string name;

  int age;

;

bool comp(Person a, Person b)

  return a.age > b.age;

vector<Person> people = { Person "Alice",Person18 ,Person22 };

sort(people.begin(), people.end(), comp);

for (auto i : people)

  cout << i.name << " " << i.age << endl;

其中,comp函数是用来确定排序规则的,返回值为true表示a应排在b前面,否则排在后面。

输出为:

Charlie 22

Alice 20

Bob 18

总结

C++提供了丰富的排序算法和函数,使用起来非常方便。对于一些简单的排序,可以使用STL库中内置的函数,对于一些较为复杂的排序,可以自定义排序函数来满足需求。排序是数据处理中非常重要的一个环节,掌握好C++中的排序算法和函数,对于C++开发者来说是必不可少的。

  
  
下一篇: C++自动售货机

评论区

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