C++ sort排序之降序、升序使用总结

yizhihongxing

C++ sort排序之降序、升序使用总结

介绍

sort函数是C++ STL库提供的一种排序函数,可以快速方便地对数组或容器进行排序。本文将详细介绍sort函数的用法,包括排序方式、自定义比较函数和对容器的排序等内容。

基本用法

sort函数的声明如下:

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

其中,RandomAccessIterator表示可以访问任意位置的迭代器类型,例如指针。first和last分别表示排序区间的起始地址和终止地址。

sort函数默认是按升序排序的,如果想要按照降序排序,需要使用比较函数来指定排序方式。

降序排序

方式一

sort函数的比较函数默认是升序排序的。如果想要按照降序排序,可以将比较函数改为返回第一个参数大于第二个参数的情况。

示例代码如下:

#include <algorithm>
#include <iostream>
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(int);
    sort(arr, arr + n, compare);
    for (int i = 0; i < n; i++)
    {
        cout << arr[i] << " ";
    }
    return 0;
}

输出结果为:

5 4 3 2 1

方式二

另外,C++11引入了一个新的函数对象std::greater,可以方便地实现降序排序。

示例代码如下:

#include <algorithm>
#include <functional>
#include <iostream>
using namespace std;

int main()
{
    int arr[] = {4, 2, 5, 1, 3};
    int n = sizeof(arr) / sizeof(int);
    sort(arr, arr + n, greater<int>());
    for (int i = 0; i < n; i++)
    {
        cout << arr[i] << " ";
    }
    return 0;
}

输出结果为:

5 4 3 2 1

升序排序

升序排序是sort函数的默认排序方式,无需指定比较函数。

示例代码如下:

#include <algorithm>
#include <iostream>
using namespace std;

int main()
{
    int arr[] = {4, 2, 5, 1, 3};
    int n = sizeof(arr) / sizeof(int);
    sort(arr, arr + n);
    for (int i = 0; i < n; i++)
    {
        cout << arr[i] << " ";
    }
    return 0;
}

输出结果为:

1 2 3 4 5

对容器排序

除了对数组进行排序外,sort函数还可以对STL容器进行排序,如vector和list等。

示例代码如下:

#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;

int main()
{
    vector<int> vec = {4, 2, 5, 1, 3};
    sort(vec.begin(), vec.end());
    for (auto i : vec)
    {
        cout << i << " ";
    }
    return 0;
}

输出结果为:

1 2 3 4 5

自定义比较函数

sort函数默认是按升序排序的,如果想要按照降序排序,需要使用比较函数来指定排序方式。有时我们需要按照某种特定的方式排序,比如对字符串按照长度进行排序,这就需要自定义比较函数来实现。

示例代码如下:

#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
using namespace std;

bool compare(string a, string b)
{
    return a.size() < b.size();
}

int main()
{
    vector<string> vec = {"apple", "banana", "pear", "orange"};
    sort(vec.begin(), vec.end(), compare);
    for (auto i : vec)
    {
        cout << i << " ";
    }
    return 0;
}

输出结果为:

pear apple banana orange

总结

本文对C++ STL库中sort函数进行了详细的介绍,包括排序方式、自定义比较函数和对容器的排序等内容。使用sort函数可以极大地简化排序过程,提高代码的效率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++ sort排序之降序、升序使用总结 - Python技术站

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

相关文章

  • C语言中的结构体快排算法

    C语言中的结构体快排算法 在C语言中,复杂的数据类型可以通过结构体定义。结构体是一种自定义类型,可以由不同类型的变量组成。快速排序算法是一种高效的排序算法,通过十分巧妙的算法思想,可以在平均$O(nlogn)$的时间复杂度内完成数组的排序。对于结构体类型的排序,在快速排序算法中也可以使用。本文主要讲解如何在C语言中使用结构体进行快排排序。 快速排序算法 快速…

    算法与数据结构 2023年5月19日
    00
  • java冒泡排序简单实例

    下面我来详细讲解一下“Java冒泡排序简单实例”的完整攻略。 简介 冒泡排序是一种简单的排序算法,它重复地走访过要排序的数列,每次比较相邻的两个元素,如果它们的顺序错误就将它们交换过来。重复上述步骤直到整个数列都有序为止。 实现步骤 首先,我们需要定义一个整型数组,用于存储待排序的数据。 int[] array = {5, 3, 8, 6, 4}; 定义一个…

    算法与数据结构 2023年5月19日
    00
  • c++深入浅出讲解堆排序和堆

    C++深入浅出讲解堆排序和堆 堆的定义 堆是一种特殊的树形数据结构,它满足以下两个特性: 堆是一个完全二叉树(Complete Binary Tree); 堆中每个节点的值都大于等于(或小于等于)其左右子节点的值。 可以看出,堆一般分为两种类型:大根堆(Max Heap)和小根堆(Min Heap)。大根堆的每个节点的值都大于等于其左右子节点的值,小根堆则相…

    算法与数据结构 2023年5月19日
    00
  • C语言排序算法之冒泡排序实现方法【改进版】

    C语言排序算法之冒泡排序实现方法【改进版】可以采用双层循环的方式实现。接下来,我将为您详细介绍该排序算法的实现方法。 冒泡排序的基本思路 冒泡排序的基本思路是:通过比较相邻的元素,将小的元素交换到前面,大的元素交换到后面。在第一轮排序时,第一个元素与第二个元素进行比较,若第一个元素比第二个元素大,则将两个元素交换位置。接下来,第二个元素与第三个元素进行比较,…

    算法与数据结构 2023年5月19日
    00
  • 前端JavaScript多数元素的算法详解

    前端JavaScript多数元素的算法详解 算法介绍 多数元素在一个数组中出现次数超过一半的元素,因此要找到多数元素,需要考虑其出现次数是否超过了数组长度的一半。本文介绍三种常见的多数元素算法,分别为排序法、哈希表法和摩尔投票法。 排序法 排序法的思路是先对数组进行排序,然后返回数组中间的那个元素即可。由于多数元素出现次数超过了数组长度的一半,因此排序后中间…

    算法与数据结构 2023年5月19日
    00
  • 数组Array的排序sort方法

    下面是关于JavaScript中数组排序sort()方法的详细攻略。 标准语法 array.sort(compareFunction) 参数 compareFunction是可选的,是用来指定按照什么顺序进行排序的,具体取决于具体实现。 如果省略,sort() 方法按照每个字符的 Unicode 代码点进行排序,因此 “10” 在排列时会在 “2” 之前,此…

    算法与数据结构 2023年5月19日
    00
  • C/C++实现快速排序(两种方式)图文详解

    C/C++实现快速排序(两种方式)图文详解 什么是快速排序 快速排序是一种基于分治策略的排序算法,由C.A.R.Hoare在1962年发明。快速排序的基本思路是:在待排序序列中选择一个元素作为“基准”(pivot),将序列分成两个部分,所有比“基准”小的元素放在一边,所有比“基准”大的元素放在另一边。如此递归下去直到序列有序。 算法流程 快速排序的流程可以简…

    算法与数据结构 2023年5月19日
    00
  • C++中字符串全排列算法及next_permutation原理详解

    C++中字符串全排列算法及next_permutation原理详解 介绍 全排列是指将一组数按一定顺序进行排列,得到所有有可能的组合。例如,对于数字1、2、3,全排列如下: 123132213231312321 C++中有现成的函数next_permutation可以实现全排列,但理解其原理仍然很重要,本篇文章将详细讲解next_permutation的原理…

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