本文共 1657 字,大约阅读时间需要 5 分钟。
利用sort(数组起始位置,数组终止位置的下一位,排序方法)(其中排序方法可以不写)对一维数组进行排序,如果不写排序方法,会自动默认为从小到大。我先演示一哈不写排序方法的结果
#includeusing 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);}
运行结果(看嘛,一眼就可以看出的从小到大)
#includeusing 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);}
我们知道了可以自己写判断谁大谁小的函数之后,我们就可以自己写这么一个函数,将其作为sort()的最后一个参数。假设这个时候我们需要对结构体进行排序,但是结构体可能带有多个参数。下面我们定义了一个带有姓名和年龄的学生类型的结构体。
//定义一个student类型,存储学生的姓名和年龄struct student{ string name; int age;};
再自己创建几个数据进行排序
#includeusing 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/