sort();对结构体数组的排序
程序员文章站
2022-07-12 16:35:04
...
sort(); 位于C++
头文件 #include中
数组排序(从小到大,从大到小)
结构体排序(数字参数从大到小…字符串为参数 字典序…)
代码示例:(直接复制运行对比结果看源码)
/*
sort 排序函数
可以调用 自定义 参数cmp
sort(a,a+10,cmp);
*/
#include<iostream>
#include<algorithm>
using namespace std;
struct node
{
int sum;
int num;
char s[10];
} str[10];
int cmp_2(node a, node b){
if(a.sum!=b.sum)
return a.sum>b.sum;
else
return a.num>b.num;
//二级 cmp
}
int cmpn1(node a,node b)
{
return a.sum>b.sum;
}
int cmpn2(node a,node b)
{
return a.s>b.s;
}
int cmp(int a,int b)
{
return a>b;
}
int main()
{
freopen("a22.txt","w",stdout);
int a[100]= {1,3,6,9,4,2,3,6,7,10};
//一共10个
cout<<"a数组最初状态\n"<<endl;
for(int i=0; i<10; i++)
cout<<a[i]<<endl;
//需要排序首位置加上需排序的位长
cout<<"默认是从大到小排序\n"<<endl;
sort(a,a+10);
for(int i=0; i<10; i++)
cout<<a[i]<<endl;
cout<<endl;
cout<<"引入cmp()从大到小\n"<<endl;
sort(a,a+10,cmp);
for(int i=0; i<10; i++)
cout<<a[i]<<endl;
cout<<endl;
// 结构体赋值
for(int i=0; i<10; i++)
{
str[i].sum=i;
str[i].s[0]='a'+i;
}
cout<<"以sum为参数 调用cmp1进行从大到小\n"<<endl;
sort(str,str+10,cmpn1);
for(int i=0; i<10; i++)
cout<<str[i].sum<<endl;
cout<<endl;
cout<<"经过sum作为参数排序后,字符串目前状态\n"<<endl;
for(int i=0; i<10; i++)
cout<<str[i].s<<endl;
cout<<endl;
cout<<"以s为参数 调用cmp2进行字典序\n"<<endl;
sort(str,str+10,cmpn2);
for(int i=0; i<10; i++)
cout<<str[i].s<<endl;
cout<<endl;
return 0;
}
上一篇: java编程思想练习题-第5章练习8-this实现细节详解
下一篇: C++:STL算法
推荐阅读
-
C#实现对二维数组排序的方法
-
Pandas 对Dataframe结构排序的实现方法
-
php数组函数序列之sort() 对数组的元素值进行升序排序
-
对pytorch网络层结构的数组化详解
-
php中array_multisort对多维数组排序的方法
-
JavaScript中用sort()方法对数组元素进行排序的操作
-
Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例
-
数据结构算法(数组中的逆序对)
-
海创软件组--20200712--axios上传文件获取进度--js对多个四边形的点对象数组分别按顺时针排序--定义上传视频并可预览
-
使用Python向C语言的链接库传递数组、结构体、指针类型的数据