当前位置:网站首页>sort函数(快速排列)的使用方法
sort函数(快速排列)的使用方法
2022-07-31 06:25:00 【mooczhimahu】
今天我们了解一下sort的使用方法。
一般的排序方法,如冒泡排序法,它的时间复杂度为n^2,这种方法的效率低下,代码相对较长,容易误事。
而快速排列(简称快排),它的时间复杂度仅为n*log2(n),代码也相对简短,只需一个函数。
sort函数包含在头文件为#include<algorithm>的c++标准库中,调用标准库里的排序方法可以不必知道其内部是如何实现的,只要出现我们想要的结果即可!
快排之所以快,因为它使用了分治算法,同冒泡排序一样,快排也属于交换排序。
一个视频看懂快速排序原理
秒懂算法快速排序-动画4分钟精讲
格式
一维数组正序快排:
sort(数组名,数组名+长度);
一维数组倒序快排:
sort(数组名,数组名+长度,greater<数组类型>());
结构体数组排序:
1.按单个成员排序
sort(结构体名,结构体名+长度,cmp);
bool cmp(结构体类型名(空格)a,结构体类型名(空格)b)
{
//自定义排序方式
/*
正序排列:return a.元素<b.元素;
倒序排列:return a.元素>b.元素;
*/
}
2.按多个成员排序
sort(结构体名,结构体名+长度,cmp);
bool cmp(结构体类型名(空格)a,结构体类型名(空格)b)
{
if(优先级条件)
//自定义排序方式
if(第二优先)
//自定义排序方式
if(第三优先)
//自定义排序方式
…………
/*
正序排列:return a.元素<b.元素;
倒序排列:return a.元素>b.元素;
*/
}
可能不是特别懂,看个例子就明白了
设:有结构体a
struct node
{
int x,y,z;
}a[100]
现在要用快排按x的降序排列,x相同就按y的降序排列,y相同就按z的升序排列,代码如下
sort(a,a+strlen(a),cmp);
bool cmp(node a,node b)
{
if(a.x<b.x)
return a.x>b.x;
if(a.y<b.y)
return a.y>b.y;
return a.z<b.z;
}
题目应用
边栏推荐
猜你喜欢
2022.07.13_每日一题
【Go】Go 语言切片(Slice)
How to set the computer password?How to add "safety lock" to your computer
讲解实例+详细介绍@Resource与@Autowired注解的区别(全网最全)
360 push-360 push tool-360 batch push tool
【Go语言入门教程】Go语言简介
2. (1) Chained storage of stack, operation of chain stack (illustration, comment, code)
[PSQL] SQL基础教程读书笔记(Chapter1-4)
【Go语言入门】一文搞懂Go语言的最新依赖管理:go mod的使用
Obtaining server and client information
随机推荐
opencv、pil和from torchvision.transforms的Resize, Compose, ToTensor, Normalize等差别
毫米波技术基础
2022.07.14_每日一题
2022.07.18 _ a day
强化学习科研知识必备(数据库、期刊、会议、牛人)
Kubernetes scheduling
项目 - 如何根据最近30天、最近14天、最近7天、最近24小时、自定义时间范围查询MySQL中的数据?
leetcode 406. Queue Reconstruction by Height 根据身高重建队列(中等)
postgresql源码学习(34)—— 事务日志⑩ - 全页写机制
QFileInfo常规方法
LeetCode:952. 按公因数计算最大组件大小【欧拉筛 + 并查集】
2022.07.18 _ a day
iOS大厂面试查漏补缺
多进程全局变量失效、变量共享问题
2022.07.13_每日一题
‘vite‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
完美指南|如何使用 ODBC 进行无代理 Oracle 数据库监控?
【微服务】(十六)—— 分布式事务Seata
2022.07.14_Daily Question
我开发了一个利用 Bun 执行 .ts / .js 文件的 VS Code 插件