博客
关于我
sort()排序
阅读量:662 次
发布时间:2019-03-15

本文共 1648 字,大约阅读时间需要 5 分钟。

1. 一维整数数组排序

  利用sort(数组起始位置,数组终止位置的下一位,排序方法)(其中排序方法可以不写)对一维数组进行排序,如果不写排序方法,会自动默认为从小到大。我先演示一哈不写排序方法的结果

#include
using namespace std;int main(){ //声明并定义一个无序数组 int num[] = { 1, 5, 2, 9, 11, 6, 7}; //计算出数组的长度 int length = sizeof(num)/sizeof(int); //对数组进行排序 sort(num, num + length); for(int i : num) printf("%d ", i);}

运行结果(看嘛,一眼就可以看出的从小到大)

在这里插入图片描述
  这个时候就有人要问了“要是我想从大到小排怎么办?”那就写排序方法撒。我们写一个函数,名称为“cmp”,我们设计成如果比较的两者前者大于后者就返回true,反之false。这样就可以实现从大到小排序。

#include
using namespace std;bool cmp(int A, int B){ return A > B;}int main(){ //声明并定义一个无序数组 int num[] = { 1, 5, 2, 9, 11, 6, 7}; //计算出数组的长度 int length = sizeof(num)/sizeof(int); //对数组进行排序 sort(num, num + length, cmp); //输出排序后的结果 for(int i : num) printf("%d ", i);}

2. 结构体排序

  我们知道了可以自己写判断谁大谁小的函数之后,我们就可以自己写这么一个函数,将其作为sort()的最后一个参数。假设这个时候我们需要对结构体进行排序,但是结构体可能带有多个参数。下面我们定义了一个带有姓名和年龄的学生类型的结构体。

//定义一个student类型,存储学生的姓名和年龄struct student{       string name;    int age;};

再自己创建几个数据进行排序

#include
using namespace std;//定义一个student类型,存储学生的姓名和年龄struct student{ string name; int age;};//利用cmp方法编写排序规定,这里我们根据年龄从小到大排序,如果年龄相同则按照姓名由大到小排序bool cmp(student A, student B){ if(A.age != B.age) //判断年龄是否相同 return A.age < B.age; return A.name > B.name;}int main(){ //创建一个装有4个学生姓名和年龄的数组 student s[4]; s[0].name = "WangLei"; s[0].age = 20; s[1].name = "XiaoWang"; s[1].age = 20; s[2].name = "LiGang"; s[2].age = 18; s[3].name = "ZhangSan"; s[3].age = 9; //对数组进行排序 sort(s, s+4, cmp); //输出排序后的结果 for(student i : s) cout<< i.name << " " << i.age << endl;}

End

转载地址:http://kydmz.baihongyu.com/

你可能感兴趣的文章
MySQL 字符串截取函数,字段截取,字符串截取
查看>>
MySQL 存储引擎
查看>>
mysql 存储过程 注入_mysql 视图 事务 存储过程 SQL注入
查看>>
MySQL 存储过程参数:in、out、inout
查看>>
mysql 存储过程每隔一段时间执行一次
查看>>
mysql 存在update不存在insert
查看>>
Mysql 学习总结(86)—— Mysql 的 JSON 数据类型正确使用姿势
查看>>
Mysql 学习总结(87)—— Mysql 执行计划(Explain)再总结
查看>>
Mysql 学习总结(88)—— Mysql 官方为什么不推荐用雪花 id 和 uuid 做 MySQL 主键
查看>>
Mysql 学习总结(89)—— Mysql 库表容量统计
查看>>
mysql 实现主从复制/主从同步
查看>>
mysql 审核_审核MySQL数据库上的登录
查看>>
mysql 导入 sql 文件时 ERROR 1046 (3D000) no database selected 错误的解决
查看>>
mysql 导入导出大文件
查看>>
mysql 将null转代为0
查看>>
mysql 常用
查看>>
MySQL 常用列类型
查看>>
mysql 常用命令
查看>>
Mysql 常见ALTER TABLE操作
查看>>
MySQL 常见的 9 种优化方法
查看>>