C++起点——结构体
排序函数
C++STL中可以直接使用排序函数,默认情况下完成升序排序,sort函数的语法为:
其中:排序区间是【左闭右开】的,即不包括终点位置的数据。
例如以下的程序:
如果需要更复杂的排序,应该怎么做呢?这就需要用到sort函数的第3参数:
其中:第3参数排序规则是一个函数,通过这个函数指定的排序规则,就可以实现自定义排序。
示例1、将数组降序排序:
#include<bits/stdc++.h>
typedef long long LL;
using namespace std;
typedef struct Node node;
bool fx(int a,int b)
//bool函数的返回值只有真和假,对应1和0。
{
return a<b;//如果a,b使这个表达式为真,保持现有顺序;否则交换a,b的值。同理a>b代表降序排列。
}
int main()
{
int n=6,a[20]={16,3,11,13,12,4};
sort(a,a+n,fx);
for(int i=0;i<=5;i++) cout<<a[i]<<" ";
return 0;
}
示例2、将数组按奇偶性排序:
#include<bits/stdc++.h>
typedef long long LL;
using namespace std;
typedef struct Node node;
bool fx(int a,int b)
{
return a%2<b%2;//a%2=0是偶数<b%2=1是奇数,所以该式代表偶数在前奇数在后。
}
int main()
{
int n=6,a[20]={16,3,11,13,12,4};
sort(a,a+n,fx);
for(int i=0;i<=n-1;i++) cout<<a[i]<<" ";
return 0;
}
#include<bits/stdc++.h>
typedef long long LL;
using namespace std;
typedef struct Node node;
bool fx(int a,