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日

相关文章

  • Java中集合和数组的排序方式小结

    Java中集合和数组的排序方式小结 数组排序 Java中可以使用Arrays类提供的sort()方法对数组进行排序。sort()方法有两个重载版本: sort(int[] a):对int类型的数组进行升序排序 sort(Object[] a):对实现了Comparable接口的对象数组进行升序排序 示例1:对int类型的数组进行升序排序 int[] arr …

    算法与数据结构 2023年5月19日
    00
  • PHP快速排序quicksort实例详解

    PHP快速排序quicksort实例详解 本文将详细介绍如何使用PHP实现快速排序算法,并提供两个示例进行说明。 基本思路 快速排序是一种比较常见的排序算法,其基本思路是通过递归将待排序数组分割成更小的子数组,并把比基准值小的元素一次放到基准值左边,比基准值大的元素一次放到基准值右边,然后对左右两边分别递归执行上述操作,直到分割成的子数组长度为1,此时由于子…

    算法与数据结构 2023年5月19日
    00
  • php排序算法(冒泡排序,快速排序)

    PHP排序算法是常见的编程问题,其中冒泡排序和快速排序是两种常见的算法。下面我会详细讲解这两种算法的原理和实现方法。 冒泡排序 冒泡排序是一种基本的排序算法,其原理是反复遍历要排序的元素,比较相邻元素的大小,若顺序不对则交换位置,一直重复该过程直到所有元素都按照升序排好。 冒泡排序的实现过程可以分为两个步骤: 外层循环控制排序的趟数,循环次数为 $n-1$ …

    算法与数据结构 2023年5月19日
    00
  • JavaScript实现基础排序算法的示例详解

    JavaScript实现基础排序算法的示例详解 排序算法可以说是计算机科学中最基础的算法之一。而对于前端开发者来说,掌握一些简单的排序算法是很有必要的,因为它们可以帮助我们解决很多实际问题,如搜索结果排序、排名等。在这里,我们将讲解JavaScript如何实现基础排序算法。 冒泡排序 冒泡排序是最简单的排序算法之一。它将数组中的元素两两比较,如果顺序不正确就…

    算法与数据结构 2023年5月19日
    00
  • C/C++语言八大排序算法之桶排序全过程示例详解

    C/C++语言八大排序算法之桶排序全过程示例详解 什么是桶排序 桶排序(Bucket Sort)是一种线性排序算法,它的基本思想是将数组内的元素根据某个规则分配到若干个桶中,然后对每个桶内的元素进行排序,最终合并每个桶内的有序元素即可得到原数组的有序结果。 桶排序的主要应用场景是待排序元素的分布比较均匀的情况下,性能表现优于其他排序算法(例如快速排序、归并排…

    算法与数据结构 2023年5月19日
    00
  • PHP排序算法之冒泡排序(Bubble Sort)实现方法详解

    PHP排序算法之冒泡排序(Bubble Sort)实现方法详解 冒泡排序概述 冒泡排序是一种基本的排序算法,它的基本思想是比较相邻的两个元素,如果前一个元素比后一个元素大,就交换这两个元素,重复进行这个过程,直到没有任何一对元素需要比较为止。冒泡排序得名于通过交换相邻的元素来把最大值“冒泡”到数列的尽头。 冒泡排序的时间复杂度为O(n²),效率较低,但其思想…

    算法与数据结构 2023年5月19日
    00
  • java如何给对象按照字符串属性进行排序

    在 Java 中,我们可以使用 Collections.sort() 方法对任意类型的对象进行排序。但是,如果我们想要按照对象的某一个字符串属性进行排序,我们可以使用 Comparator 接口来实现。 具体步骤如下: 首先,创建一个 Comparator 对象,重写 compare() 方法,按照需要的属性进行排序。例如,如果我们要按照对象的 name 属…

    算法与数据结构 2023年5月19日
    00
  • php实现归并排序算法的方法详解

    PHP实现归并排序算法的方法详解 归并排序算法简介 归并排序是一种使用分治法思想的高效稳定排序算法。其基本思想是将待排序的序列拆分成若干个子序列,对每个子序列进行排序,然后将排序后的子序列合并成一个大的有序序列。 归并排序算法的复杂度为O(nlogn),适用于各种数据规模的排序。 归并排序算法步骤 将序列递归拆分成若干个子序列。 对每个子序列进行递归排序。 …

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