c++入门必学库函数sort的基本用法

一、sort函数的基本介绍

sort()函数是C++ STL标准库提供的一种排序函数,能够对数组或容器进行排序。可以用于排序基本数据类型、结构体、对象等各种数据类型。其中,数组的排序时简单易行的,容器的排序则更加强大方便。

sort()的函数原型如下:

template<class RandomAccessIterator> 
void sort(RandomAccessIterator first, RandomAccessIterator last); 

template<class RandomAccessIterator, class Compare> 
void sort(RandomAccessIterator first, RandomAccessIterator last, Compare comp);

二、参数说明及注意事项

sort()函数的两种形式,其参数解释如下:

  • random_access_iterator first——表示排序范围的首元素指针。
  • random_access_iterator last——表示排序范围的尾元素的下一个元素的指针。
  • Compare comp——指定排序规则谓词,可选。不指定规则时,默认按升序排列。

注意:

  • sort()排序是基本的快排算法,最差时间复杂度为$O(n^2)$,但是平均时间复杂度为$O(nlog2n)$,效率较高。
  • sort()排序属于原地排序,即排序过程中不会产生新的序列,因此不需要消耗额外的空间。
  • RandomAccessIterator满足以下要求,表示该迭代器是可随机访问的。
// 随机访问迭代器
template<class Iterator>
class random_access_iterator{
public:
    typedef ptrdiff_t                                       difference_type;
    typedef typename iterator_traits<Iterator>::iterator_category  iterator_category;
    typedef typename iterator_traits<Iterator>::value_type         value_type;
    typedef typename iterator_traits<Iterator>::pointer            pointer;
    typedef typename iterator_traits<Iterator>::reference          reference;
    // ...
};

三、sort()函数的使用示例

1. 对数组进行排序

#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
    int arr[] = {1,3,2,6,5,4};
    int num = sizeof(arr) / sizeof(arr[0]);
    sort(arr, arr + num);

    for (int i = 0; i < num; i++)
        cout << arr[i] << " ";

    return 0;
}

输出结果为:

1 2 3 4 5 6

2. 对容器进行排序

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

struct Student
{
    int id;
    string name;
    int age;
};

bool compare(const Student& s1, const Student& s2)
{
    return s1.id < s2.id;
}

int main()
{
    vector<Student> students = {
        {1, "Alice", 20},
        {2, "Bob", 19},
        {3, "Cindy", 21}
    };

    sort(students.begin(), students.end(), compare);

    for (auto& s : students)
        cout << s.id << " " << s.name << " " << s.age << endl;

    return 0;
}

输出结果为:

1 Alice 20
2 Bob 19
3 Cindy 21

以上是使用sort()函数的两个示例,通过上面的例子,我们可以发现sort()函数的基本使用方法,了解了sort()函数的基本用法后,可以进一步学习其常用API,例如重载了构造函数的结构体和使用C++11中的lambda函数等。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c++入门必学库函数sort的基本用法 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • C语言排序方法(冒泡,选择,插入,归并,快速)

    下面是关于C语言排序方法冒泡、选择、插入、归并、快速的详细攻略: 冒泡排序 冒泡排序是一种最简单的排序算法,它的核心思想是从左到右依次比较相邻的两个元素,如果前一个元素大于后一个元素,就交换它们的位置,这样一遍比较后,最大的元素就会被“冒泡”到最右边。然后再对剩余的元素重复同样的操作,这样一直迭代直到整个序列排序完成。 下面是标准的C语言冒泡排序代码示例: …

    算法与数据结构 2023年5月19日
    00
  • java排序算法图文详解

    Java排序算法图文详解 在Java编程中,排序算法是非常重要且常见的一部分。本文将详细讲解Java中的各种排序算法及其实现,帮助读者了解不同算法的特点和使用场景,提高程序的效率和可读性。 排序算法分类 在Java中,常用的排序算法主要可以分为以下几类: 冒泡排序 选择排序 插入排序 快速排序 归并排序 堆排序 冒泡排序 冒泡排序是一种简单的排序算法,其原理…

    算法与数据结构 2023年5月19日
    00
  • C#中使用基数排序算法对字符串进行排序的示例

    下面是使用基数排序算法对字符串进行排序的完整攻略。 什么是基数排序算法? 基数排序算法是一种非比较排序算法,它先按照低位进行排序,然后再按照高位进行排序。在对一组字符串进行排序时,可以先按照字符串的最后一位进行排序,然后再按照倒数第二位进行排序,逐步地按照每一位进行排序,最终完成整组字符串的排序。 C#中实现基数排序算法的步骤 在 C# 中实现基数排序算法需…

    算法与数据结构 2023年5月19日
    00
  • java实现波雷费密码算法示例代码

    Java实现波雷费密码算法的步骤如下: 首先,下载并添加bcprov-jdk15on-168.jar的BouncyCastle加密库。下载地址:https://www.bouncycastle.org/latest_releases.html 打开Java IDE,并新建一个Java项目。 在项目中创建一个新的Java类,并将其命名为“BlowfishCip…

    算法与数据结构 2023年5月19日
    00
  • C#几种排序算法

    下面是关于“C#几种排序算法”的详细攻略: C#几种排序算法 概述 排序算法是程序员必须掌握的基本算法之一。在实际应用中,选择合适的排序算法可以显著提高程序的执行效率。这里介绍几种经典的排序算法,并提供相应的C#代码实现。 排序算法简介 冒泡排序 冒泡排序是一种基础的排序算法,思路是将相邻的两个元素进行比较,将较大的元素交换到后面。具体过程是从第一个元素开始…

    算法与数据结构 2023年5月19日
    00
  • 超详细解析C++实现快速排序算法的方法

    超详细解析C++实现快速排序算法的方法 什么是快速排序? 快速排序是一种高效的排序算法。因为采用了分治法的思想,利用递归实现,每次排序只需比较部分元素,而不需要像冒泡排序和插入排序那样需要从头到尾对比每个元素,因此效率非常高。 快速排序算法的基本思想 快速排序的基本思想是:通过一趟排序将待排记录分割成独立的两部分,使得前面的记录的关键字均小于后面的记录的关键…

    算法与数据结构 2023年5月19日
    00
  • 可能是你看过最全的十大排序算法详解(完整版代码)

    针对“可能是你看过最全的十大排序算法详解(完整版代码)”这篇文章,下面是详细的攻略: 标题 首先,该文章的标题是:可能是你看过最全的十大排序算法详解(完整版代码) 文章简介 其次,在文章简介中,作者提到该篇文章是一个完整介绍了十大排序算法并且附有代码实现的文章,可以帮助读者了解这些排序算法的原理和代码实现。 内容 文章的主体部分是对十大排序算法进行详细的讲解…

    算法与数据结构 2023年5月19日
    00
  • C语言的冒泡排序和快速排序算法使用实例

    C语言的冒泡排序和快速排序算法使用实例 什么是排序算法 排序算法是一种将一组数据按照特定顺序排列的算法。常见的排序算法包括冒泡排序、快速排序、插入排序、选择排序等。 冒泡排序 冒泡排序是一种简单的排序算法,它重复地走访过要排序的元素,依次比较相邻两个元素,如果它们的顺序错误就交换它们的位置。重复这个过程,直到没有再需要交换的元素,即排序完成。 以下是 C 语…

    算法与数据结构 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部