STL之sort排序(C++)

本文详细介绍了C++ STL中的sort()函数,包括其平均时间复杂度O(N·lg(N)),以及如何使用sort()进行数组和结构体的排序。通过自定义排序准则、内置比较函数以及重载结构体的<运算符,实现不同需求的排序。同时,文中给出了NOIP竞赛中与sort()函数相关的题目作为实践示例。
摘要由CSDN通过智能技术生成

一、sort()函数的说明

  1. 排序函数 sort(),其时间复杂度平均为O(N·lg(N)),使用时需声明其头文件 #include <algorithm>using namespace std .
  2. STL中的sort()并非只是普通的快速排序,除了对普通的快速排序进行优化,它还结合了插入排序和堆排序。根据不同的数量级别以及不同情况,能自动选用合适的排序方法。

二、sort()函数的使用方法

sort(a+m, a+n);	//(a+m, a+n) 范围内的元素进行排序 
sort(a+m, a+n, cmp); //cmp 是函数或仿函数,是sort的排序规则,默认 operator< 

1、自定义排序准则(常用)

(1)简单数组排序

sort() 函数默认从小到大排序,但也可以自定义排序准则(比较常用),如:

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

int a[100] = {
   55,13,84,47,21,56,77,44,92,10};

bool mycmp(int a, int b){
   
	return a > b; //从大到小,输出结果:92 84 77 56 55 47 44 21 13 10
	//return a < b; //从小到大,输出结果:10 13 21 44 47 55 56 77 84 92
	//return a % 10 > b % 10; //按照每个数的个位进行从大到小排序,输出结果:47 77 56 55 84 44 13 92 21 10
} 

int main(){
   
	sort(a, a+10, mycmp); //数组名 + 数字的本质是指针操作 
	
	for(int i=0; i<10; i++)
		cout << a[i] << " "; 
	return 0;
} 
(2)结构体排序

结构体一般不能比较大小,但可以利用 sort() 对结构体排序,如:

#include <iostream>
#include <algorithm>
using 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值