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++算法题解LeetCode1408数组中的字符串匹配

    C C++算法题解LeetCode1408数组中的字符串匹配 问题描述 给定字符串数组 words,在其中找到两个不同的单词,使得它们的长度之和最长。可以假设 words 中至少存在两个单词。 返回两个单词长度之和的最大值。 解题思路 方法一:暴力枚举 我们可以将字符串数组中的字符串两两组合,计算它们的长度之和并更新最大值,最后返回最大值即可。 时间复杂度:…

    算法与数据结构 2023年5月19日
    00
  • Python算法绘制特洛伊小行星群实现示例

    下面是“Python算法绘制特洛伊小行星群实现示例”的完整攻略,包含两个示例说明。 1. 安装所需库 在开始绘制特洛伊小行星群之前,首先需要安装所需的Python库,包括numpy、matplotlib和mpl_toolkits.mplot3d等。可以使用以下命令进行安装: pip install numpy pip install matplotlib p…

    算法与数据结构 2023年5月19日
    00
  • c语言快速排序算法示例代码分享

    首先,我们需要了解什么是快速排序。快速排序(QuickSort)是一种排序算法,其采用了分治的思想,并使用递归的方式处理数据集合。它的基本思想是从待排序的数据集合中选择一个元素作为分界点(一般称为pivot),然后将小于pivot的元素放到pivot左边,大于pivot的元素放到pivot右边,最后将pivot放到中间位置。然后递归处理pivot左右两边的子…

    算法与数据结构 2023年5月19日
    00
  • 利用JavaScript在网页实现八数码启发式A*算法动画效果

    下面是利用JavaScript在网页实现八数码启发式A*算法动画效果的完整攻略: 简介 八数码问题是指在一个33的方格上,放置了1~8这八个数字,其中有一个空格可以移动,初态和目标态之间的变换最少需要几步。而启发式A算法是一种针对图形和网络中的路径规划问题的搜索算法。 利用JavaScript实现八数码启发式A*算法动画效果,可以帮助用户在屏幕上直观地看到计…

    算法与数据结构 2023年5月19日
    00
  • golang 归并排序,快速排序,堆排序的实现

    Golang 实现归并排序,快速排序和堆排序 简介 排序算法的实现是大多数程序员必备的技能之一。在这个过程中,我们考虑三种经典的排序算法之一:归并排序,快速排序和堆排序。我们在学习它们的同时,也在学习使用 Golang 写出高效的排序算法。 归并排序 算法原理 归并排序是基于归并操作的一种排序算法,该算法的核心思想是将一个数组分成两个较小的数组,然后递归地将…

    算法与数据结构 2023年5月19日
    00
  • python 如何在list中找Topk的数值和索引

    对于如何在Python的list中找Topk的数值和索引,可以采用以下方法: 方法一:使用sorted函数排序 可以使用Python内置的sorted函数对list进行排序,然后取前k个元素,同时得到它们的索引。具体代码如下: lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] k = 3 # 记录每个元素的索引和值 lst_wi…

    算法与数据结构 2023年5月19日
    00
  • C语言超详细讲解排序算法上篇

    C语言超详细讲解排序算法上篇 简介 本文将介绍排序算法的基础知识和常见排序算法,包括冒泡排序、选择排序、插入排序。 排序算法是计算机科学中非常重要的算法之一,在实际开发中也经常用到。了解各种排序算法的特点和优缺点,可以帮助我们更好地应对实际问题。 基础知识 在介绍排序算法之前,有一些基础知识需要了解。 1. 时间复杂度 时间复杂度用来衡量一个算法所需要的计算…

    算法与数据结构 2023年5月19日
    00
  • C语言中的5种简单排序算法(适合小白)

    C语言中的5种简单排序算法(适合小白) 介绍 排序算法是计算机科学中最基本的算法之一,其主要目的是将一组无序的数据按照一定的规则进行排列。在计算机程序设计中,排序算法是非常常用的操作之一。 本文将会介绍C语言中5种简单的排序算法,这些算法非常适合新手上手学习。 以下是5种简单排序算法的详细介绍和实例代码。 冒泡排序(Bubble Sort) 冒泡排序也是一种…

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