如何用库函数sort进行自定义排序 用法详解 C语言入门

欢迎关注笔者,你的支持是持续更博的最大动力


在标准模版库(Standard Template Library)中,包含一些常用的算法和数据结构可供调用。

使用前提:#include <algorithm>

sort排序

sort就是STL中已经包含的排序算法,是用快速排序实现的,时间复杂度 O(nlogn)。

语法:sort (数组名+n1,数组名+n2,排序规则名( ) );

sort函数可以:

  • 基础数据类型的数组进行默认排序;
  • 基础数据类型的数组进行自定义排序;
  • 任意数据类型的数组进行自定义排序。

下面将举例说明这三大用法:

用法一

对基本类型的数组进行默认排序(从小到大),默认排序则不用写第三个参数 (排序规则名):
sort (数组名+n1,数组名+n2);

意思是,将数组中下标范围为 [n1, n2) 的元素从小到大排序。

举例

对整个数组排序,[0, 7):
int a[ ] = {15, 4, 3, 9, 7, 2, 6};
sort(a, a+7);
结果:{2,3,4,6,7,9,15}

对前三个元素排序,[0, 3):
int a[ ] = {15, 4, 3, 9, 7, 2, 6};
sort(a, a+7);
结果:{3, 4, 15, 9, 7, 2, 6}

对第3个到第5个元素排序,[2, 5):
int a[ ] = {15, 4, 3, 9, 7, 2, 6};
sort(a+2, a+5);
结果:{15, 4, 3, 7, 9, 2, 6}

用法二

对基本类型数组从大到小排序,规则名greater,需要写明被排序的元素类型T:
sort (数组名+n1,数组名+n2,greater<T>() );

举例

对第2个元素到第4个元素排序,[1, 4):
int a[ ] = {15, 4, 3, 9, 7, 2, 6};
sort(a+1, a+4, greater<int>() );
结果:{15, 9, 4, 3, 7, 2, 6}

用法三

自定义的排序规则,对任何类型T的数组排序:
sort (数组名+n1,数组名+n2,排序规则结构名() );

排序规则结构的定义方式:

struct 结构名 {
   
	bool operator() (const T & a1, const T & a2) const {
   
		//若a1应该在a2前面,返回true
		//否则,返回false,相等也是false
	}
};

下面将举例:

  1. int 数据类型的数组按2个规则排序
  2. 给自定义的 Student 数据类型按学生姓名、学号、绩点分别排序

举例1:int 数据类型

//创建按从大到小排序规则
struct Rule1 {
   
    bool operator()(const int & a1, const int & a2) const{
   
        return a1 > a2;
    }
};

//创建按个位数从小到大排序规则
struct Rule2 {
   
    bool operator()
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值