C++ sort()函数具体用法

这篇具有很好参考价值的文章主要介绍了C++ sort()函数具体用法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

sort()函数详解

sort()函数可以将一个容器或者数组的值进行排序,还可以自定义排序方式。sort()是基于头文件<algorithm>库下的一个函数,所以要调用sort(),就需要添加头文件。

基本排序方法

#include<iostream>
#include<algorithm>
using namespace std;
int main() {
    int arr[] = { 2,4,7,1,3 };
    return 0
}
一.正常排序

我们可以通过写

sort(arr, arr + 5);

我们就可以将arr中从开始的元素到第5个元素按从小到大的顺序进行排序。

二.排序数据中间个别元素

如果我们写

sort(arr + i, arr + j);

那么被排序的就是arr[i]arr[j - i],其他元素将保持原位置。

三.从大到小排序或按照一个规则排序

如果我们希望arr中的元素从大到小排序(或者按照某一个规则进行排序),我们可以再为sort传入第三个参数--“排序方法”:

sort(arr, arr + 5, greater<int>());

其中greater表示“跟大”的意思,<int>表示待排序的数组元素类型为int,整个代码表示让一个元素类型为整数的数组从大到小排序 。

四.最终代码

自此我们的程序会成为:

#include<iostream>
#include<algorithm>
using namespace std;
int main() {
    int arr[] = { 2,4,7,1,3 };

    //=============排序从小到大======
    sort(arr, arr + 5);
    for (int i = 0; i < 5; i++)
        cout << arr[i] << " ";
    cout << endl;

    //=============从大到小======
    sort(arr, arr + 5, greater<int>());
    for (int i = 0; i < 5; i++)
        cout << arr[i] << " ";
    cout << endl;

    //=============排序中间元素======
    sort(arr + 1, arr + 4);
    for (int i = 0; i < 5; i++)
        cout << arr[i] << " ";
    cout << endl;

    return 0;
}

执行后输出如下

c++sort函数的用法,c++,c++,算法,排序算法,Powered by 金山文档

自定义排序--基础

我们可以之后再写一个sort,在这个sort中,我们可以再为sort传入第三个参数--“排序方法”。

首先我们在int main()之前加上:

cmp函数,定义要为bool类型,具体就是传入xy,两个参数进行比较。

如果返回值为真就会将第一个参数排在第二个参数前(注意,不能出现等号,如果出现等号,一定要给该值为false)。理解困难的话,其实就是看返回值这,返回x > y,前面大于后面就是从大到小排序。

bool cmp(int x, int y){
    return x > y;
}

并且在sort的第三个参数中传入cmpsort函数是系统定义好的,可以直接支持函数地址作为参数。

sort(arr, arr + 10, cmp);

具体代码如下

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

bool cmp(int x, int y){
    return x > y;
}

int main() {
    int arr[] = { 2,4,7,1,3,5,9,6,8,10};
    sort(arr, arr + 10, cmp);
    for (int i = 0; i < 10; i++)
        cout << arr[i] << " ";
    cout << endl;
    return 0;
}

执行后输出如下

c++sort函数的用法,c++,c++,算法,排序算法,Powered by 金山文档
我们再举一个例子

例如我们要将一个数组arr按照除3的余数从小到大排序来进行排序。

我们先写一个cmp,因为可能有相等的余数,如果相等我们按照其本身的大小进行从小到大排序。

bool cmp(int x, int y){
   if(x % 3 != y % 3)
      return x % 3 < y % 3;
   else
      return x < y;
}

具体代码如下

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

bool cmp(int x, int y){
   if(x % 3 != y % 3)
      return x % 3 < y % 3;
   else
      return x < y;
}
int main() {
    int arr[] = { 1,2,3,4,5,6,7,8,9,10};
    sort(arr, arr + 10, cmp);
    for (int i = 0; i < 10; i++)
        cout << arr[i] << " ";
    cout << endl;
    return 0;
}

运行结果如下

c++sort函数的用法,c++,c++,算法,排序算法,Powered by 金山文档

自定义排序--结构体

下面我们再来了解sort对于结构体的排序,我们可以按照结构体中某个元素来进行排序。

例如,我们写一个学生的结构体,里面有姓名和成绩,我们要按照成绩从大到小排序。

我们先写一个结构体Student

struct Student{
   string name;
   int score;
};

我们要按照得分来进行排序

bool cmp(Student x, Student y){
   return x.score > y.score;
}

具体代码如下

#include<iostream>
#include<algorithm>
using namespace std;
struct Student {
    string name;
    int score;
};
bool cmp(Student x, Student y) {
    return x.score > y.score;
}
int main() {
    Student stu[4];
    stu[0].name = "A";
    stu[0].score = 80;
    stu[1].name = "B";
    stu[1].score = 75;
    stu[2].name = "C";
    stu[2].score = 96;
    stu[3].name = "D";
    stu[3].score = 85;

    sort(stu, stu + 4, cmp);

    for (int i = 0; i < 4; i++) {
        cout << stu[i].name << ":" << stu[i].score << endl;
    }
    return 0;
}

运行结果如下

c++sort函数的用法,c++,c++,算法,排序算法,Powered by 金山文档

以上就是我对sort函数的见解,如果此文章有错误或者有不同的见解欢迎评论或者私信。文章来源地址https://www.toymoban.com/news/detail-736180.html

到了这里,关于C++ sort()函数具体用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JAVA的sort用法详解(二维数组排序,List<>排序,lambada表达式,自定义类型排序)

    目录 前言: 一维数组降序: 方法1.Comparator接口: 代码实现: 方法2.Collections.reverseOrder(): 代码实现:  二维数组排序: 代码如下: List排序: 代码如下: 自定义类型比较排序: 按照年龄逆序排序: 按照姓名升序排序: lambada表达式简写: 一维数组逆序代码: 二维数组排

    2024年04月09日
    浏览(42)
  • js中.sort()函数的用法

    这是.sort()函数最常见的用法 但或许你还对其为什么要这么操作存有一些疑惑 我们要先搞懂往.sort()里传入的函数的参数a,b是什么 sort()要排序就要遍历数组,以上面的数组为例子 其中遍历第一步的a=3、b=2, 第二步时候a=2、b=3, 第三步的时候a=3,b=34 。。。。。。。 就像你写

    2024年02月02日
    浏览(28)
  • Python基础之sorted()函数用法

    本篇是关于sorted()函数的一些基本用法,如有不足缺陷欢迎补充指正。 1、简单的排序 sorted函数可以对可迭代类型的容器内的数据进行排序 2、进阶使用 sorted(L,key=···) 其中key用来接收一个自定义的排序规则 3、选择升序还是降序排列方式 其中sorted函数是默认升序排序,

    2024年02月11日
    浏览(34)
  • MATLAB中sort函数的用法大全

    1.sort的基本用法 MATLAB中的sort函数用于对数组进行排序。最基本的用法是: sortedArray = sort(Array); 这会按照升序对数组进行排序。要按降序排序,你可以使用\\\'descend\\\'选项: sortedArray = sort(Array, \\\'descend\\\'); 如果你的数组是多维的,你可以指定你要排序的维度。例如,要按列排序,你

    2024年04月22日
    浏览(31)
  • 【C++】STL 算法 - 排序算法 ( 合并排序算法 - merge 函数 | 随机排序算法 - random_shuffle 函数 | 反转序列算法 - reverse 函数 )

    在 C++ 语言 的 标准模板库 ( STL , STL Standard Template Library ) 中 , 提供了 merge 合并排序算法函数 用于 将 两个已排序好的容器 合并成一个新的已排序的容器 ; merge 合并排序算法 函数原型 如下 : 参数解析 : InputIterator1 first1 参数 : 有序 输入 容器 1 的 迭代器范围 的 起始迭代器 (

    2024年01月18日
    浏览(38)
  • 【排序算法详细介绍】桶排序(Bucket Sort)冒泡排序(Bubble Sort)快速排序(Quick Sort)

    今天学习了一些简单的 排序算法 ,其实在我们平时解决问题中经常用到,今天正好一起看了看,记录一下。 如果对你也有帮助,我很开心~ 桶排序是一种排序算法,它将数组划分为一些 有序的桶 ,然后 每个桶再分别排序 。最后,将所有的桶合并起来,得到一个有序的数组。桶排

    2024年01月25日
    浏览(39)
  • Python之排序函数sort(),sorted(),sort_values(),sort_index().

    1. sorted()函数 sorted()函数是Python的内置函数,此函数不改变原序列,在排序后会生成一个新的序列。调用时,一般只需要给出一个序列即可,该序列可以是列表,字典,元组,字符串。其余参数取默认值,默认为升序排序。最终结果将返回一个以列表为容器的返回值。若该序

    2024年02月04日
    浏览(32)
  • 排序算法(stable_sort(), sort())

    sort函数我相信大家都不陌生,今天介绍一个新的排序算法stable_sort stable_sort:稳定排序算法,维持相等元素的原有顺序。 假如我们定义一个字符串数组 这些字符串是按照字典序排列的,我们现在想要words按照单词长度从小到大重排的同时,还希望具有相同长度的元素按照字典

    2024年02月07日
    浏览(36)
  • 【排序算法】堆排序(Heap Sort)

    堆排序是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。 学习堆排序之前,有必要了解堆!若读者不熟悉堆,建议先了解堆(建议可以通过二叉堆,左倾堆,

    2024年02月01日
    浏览(57)
  • 46,排序算法sort

    排序算法sort 常用排序算法 sort 学习目标: 掌握i常用排序算法 算法简介: sort //对容器内元素进行排序 random_shuffle //洗牌,指定范围内的元素随机调整次序 merge //容器元素合并,并存储到另一容器中 reverse //反转指定范围的元素 功能描述: 对容器内元素进行排序 函数原型:

    2024年02月16日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包