日志6
sort函数解决排序问题
1. 基本介绍
sort函数是C++标准库<algorithm>中的一个排序函数。它可以对给定范围内的元素进行快速排序,其默认的排序方式是升序排列。
2. 函数原型
template <class RandomAccessIterator> void sort(RandomAccessIterator first, RandomAccessIterator last);
其中first和last是迭代器,它们定义了要排序的元素范围,这个范围是左闭右开区间[first, last)。例如,对于数组int arr[]={1,2,3,4,5};,如果要对整个数组排序,first就是arr(指向数组第一个元素的指针),last是arr + 5(指向数组最后一个元素的下一个位置的指针)。
3. 使用示例(升序排序)
以对数组排序为例:
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int arr[] = {4, 2, 5, 1, 3};
int n = sizeof(arr)/sizeof(arr[0]);
sort(arr, arr + n);
for (int i = 0; i < n; ++i) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
这段代码首先定义了一个整数数组arr,然后计算出数组元素的个数n。接着使用sort函数对数组arr进行排序,排序范围是[arr, arr + n)。最后通过循环输出排序后的数组元素。
当需要按照自定义规则排序时,需要提供一个比较函数。例如,要对数组进行降序排序:
#include <iostream>
#include <algorithm>
using namespace std;
// 比较函数,用于降序排序
bool compare(int a, int b) {
return a > b;
}
int main() {
int arr[] = {4, 2, 5, 1, 3};
int n = sizeof(arr)/sizeof(arr[0]);
sort(arr, arr + n, compare);
for (int i = 0; i < n; ++i) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
这里定义了一个名为compare的函数,它接受两个参数a和b。当a > b时返回true,这就告诉sort函数按照降序排列元素。然后在调用sort函数时,将compare函数作为第三个参数传入,这样sort函数就会根据自定义的规则进行排序。
5. 对容器排序
以vector容器为例,sort函数也可以对vector中的元素进行排序:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
vector<int> vec = {4, 2, 5, 1, 3};
sort(vec.begin(), vec.end());
for (int num : vec) {
cout << num << " ";
}
cout << endl;
return 0;
}
vec.begin()和vec.end()分别是指向vector容器中第一个元素和最后一个元素的下一个位置的迭代器,sort函数通过这两个迭代器确定排序范围,对vector中的元素进行排序。
阿里云工作强度 697人发布