日志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中的元素进行排序。

全部评论

相关推荐

凌小云:问题太大了,首先把教育背景放前面。不然简历不用看就看被pass了。然后两个项目写了和没写一样,不如商城+点评的描述。那专业技能,前面来个技术名,后面一点都不见具体那些了。你说你熟练java,说说java反射实现方式,那些地方用,io都有那些。这让面试官怎么问。这份简历看下来,没一点问的希望。看着技术栈用的多,亮点也没解决什么实际问题。很差的一份简历,患上技术堆砌的毛病了
我的简历长这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务