sort函数详解

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

目录

sort介绍

sort中cmp的使用

代码样例

输出结果

cmp进行升序排序

代码样例

输出结果

借助less和greater进行升降排序

代码样例

输出结果


下面我来介绍sort的一些用法。

sort介绍

sort(v.begin(),v.end()),它是用来对一组序列进行排序的。sort函数进行排序的时间复杂度为n*log2n,比冒泡之类的排序算法效率要高,包含在头文件为#include<algorithm>的c++标准库中。sort()  函数,本质就是一个模板函数,该函数专门用来对容器或普通数组中指定范围内的元素进行排序,排序规则默认以元素值的大小做升序排序。

    sort()函数除了可以对int型、char型、double型、字符串排序外,还可以实现对结构体、pair、vector等类型进行排序,但需要自己写比较函数。而且sort()既可以对数组排序,也可以对vector容器排序。

sort中cmp的使用

上面说过了sort默认是升序排序,但是如何进行降序排序呢,要想使用sort进行升序排序只需要使用cmp函数就行了,最重要的是,cmp不仅可以进行升序也能进行降序。

代码样例

#include<iostream>
#include<algorithm>
#include<bits/stdc++.h>
using namespace std;
bool cmp(int a,int b){
	return a>b;
}
int main(){
	int str[]={5,3,9,1,5,9,3,0};
	int n=sizeof(str)/sizeof(int);
	sort(str,str+n);
	cout<<"sort排序后的结果:";
	for(int i=0;i<n;i++){
		cout<<str[i]<<" ";
	}
	cout<<endl<<"使用cmp后的sort的排序结果:" ;
	sort(str,str+n,cmp);
	for(int i=0;i<n;i++){
		cout<<str[i]<<" ";
	} 
	return 0;
}

输出结果

sort排序后的结果:0 1 3 3 5 5 9 9
使用cmp后的sort的排序结果:9 9 5 5 3 3 1 0

cmp进行升序排序

代码样例

#include<iostream>
#include<algorithm>
#include<bits/stdc++.h>
using namespace std;
bool cmp(int a,int b){
	return a<b;
}
int main(){
	int str[]={5,3,9,1,5,9,3,0};
	int n=sizeof(str)/sizeof(int);
	sort(str,str+n,cmp);
	cout<<"sort升序后的结果:";
	for(int i=0;i<n;i++){
		cout<<str[i]<<" ";
	}
	return 0;
}

输出结果

sort升序后的结果:0 1 3 3 5 5 9 9

借助less和greater进行升降排序

借助c++标准库来实现降序(或升序)。此时要包含头文件<functional>,<functional>头文件提供了一些基于模板的比较函数对象,这里在排序的时候只用到了 greater<type>() 和 less<type>() 两个;让 greater<type>() 或 less<type>() 做sort()函数的第三个参数来实现升序或降序排列;其中greater<type>() 用于降序排列,less<type>() 用于升序排列

代码样例

#include<iostream>
#include<algorithm>
#include<bits/stdc++.h>
using namespace std;
bool cmp(int a,int b){
	return a>b;
}
int main(){
	int str[]={5,3,9,1,5,9,3,0};
	int n=sizeof(str)/sizeof(int);
	sort(str,str+n,less<int>());
	cout<<"sort升序后的结果:";
	for(int i=0;i<n;i++){
		cout<<str[i]<<" ";
	}
	cout<<endl<<"sort降序后的结果:" ;
	sort(str,str+n,greater<int>());
	for(int i=0;i<n;i++){
		cout<<str[i]<<" ";
	} 
	return 0;
}

输出结果

sort升序后的结果:0 1 3 3 5 5 9 9
sort降序后的结果:9 9 5 5 3 3 1 0

 关于sort函数的介绍就到这了,希望对大家有用,谢谢大家。文章来源地址https://www.toymoban.com/news/detail-603509.html

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

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

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

相关文章

  • 排序算法(stable_sort(), sort())

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

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

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

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

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

    2024年02月16日
    浏览(28)
  • 算法 - 归并排序(Merge_sort)

    目录 什么是归并排序(Merging_sort)? 归并排序的适用场景: 演示归并排序的过程(默认arr和brr两个数组都是有序的): 代码实现: 如果我们事先并没有分配好两个已经排序好的数组,而是直接的一个无序序列呢? 代码实现: 在写归并排序的代码之前,我们先对归并排序的定义

    2024年02月13日
    浏览(41)
  • 算法 - 快速排序(Quick_sort)

    目录 什么是快速排序? 快速排序的使用场景: 演示快速排序的过程: 第一趟排序: 第二趟排序: 通过代码来实现:  对快速排序的总结: 在写快速排序的代码之前,我们先对快速排序的排序原理以及定义进行梳理: 快速排序(Quick_sort)是对冒泡排序的一种改进,它也是

    2024年02月10日
    浏览(33)
  • C++(15): STL算法:排序(sort)

            std::sort 是 C++ 标准库 algorithm 中提供的一个函数,用于对容器(如数组、向量等)中的元素进行排序。它基于比较操作对元素进行排序,通常使用高效的排序算法,如快速排序、归并排序或堆排序等。         在实际应用中,std::sort 通常会根据输入数据的大

    2024年04月12日
    浏览(24)
  • 原生JS之sort排序方法详解

    在JavaScript中排序主要用到的api就是sort了,但是使用sort有几个坑需要注意,让我们一起来看看 sort() 方法用于对 数组 的元素进行排序。排序顺序可以是字母或数字,并按升序或降序。 默认排序顺序为按字典升序。 在不使用参数时,sort使用的是字典排序 如果数组中元素都是

    2024年02月03日
    浏览(26)
  • 【C++】iota函数 + sort函数实现基于一个数组的多数组对应下标绑定排序

    目录 一、iota函数 1. 函数解析 ​①  迭代器类型(补充) ② 头文件 ③  参数 2. 函数用途与实例 二、sort函数 1、 函数解读 2、实现倒序排列 2.1 greater 与 less 模板参数 2.2  lambda表达式 三、下标绑定排序(zip) --- 833.字符串中的查找与替换 ①  迭代器类型(补充) ForwardIterator :

    2024年02月12日
    浏览(42)
  • 十大排序算法(Top 10 Sorting Algorithms)

    十种常见排序算法可以分为两大类: 比较类排序 :通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序 :不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因

    2024年02月08日
    浏览(36)
  • 图解快排——快速排序算法(quick sort)

    算法思想 快速排序算法是对冒泡排序算法的一种改进算法,在当前所有内部排序算法中,快速排序算法被认为是最好的排序算法之一。 快速排序的基本思想: 通过一趟排序将待排序的序列分割为左右两个子序列,左边的子序列中所有数据都比右边子序列中的数据小,然后对

    2024年01月16日
    浏览(28)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包