您的位置:首页 > 编程语言 > C语言/C++

利用标准库中sort函数进行排序

2014-09-03 17:35 246 查看
//1、利用sort进行由小到大排序:

#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
int a[10],i;
for (i=0;i<10;i++)
scanf("%d",&a[i]);
sort(a,a+10);
for (i=0;i<10;i++)printf("%d ",a[i]);
return 0;
}

//2、利用sort进行由大到小排序:

加上cmp函数即可,修改cmp函数(将‘>’改为‘<’)也可以进行由小到大排序,若没有cmp函数,默认是由小到大排序,如以上例子。


#include<stdio.h>
#include<algorithm>
using namespace std;
int cmp(int a,int b)
{
if(a>b)
return 1;
else
return 0;
}
int main()
{
int a[10],i;
for (i=0;i<10;i++)
scanf("%d",&a[i]);
sort(a,a+10,cmp);
for (i=0;i<10;i++)printf("%d ",a[i]);
return 0;
}
//3、利用sort对结构体一级排序:
如以下程序中,按照结构体中的x由小到大的顺序,对结构体排序。[b][b][b]改变cmp函数中的比较符号,可以将排序改成按升序还是降序。[/b][/b]
[/b]

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
struct In
{
int x;
int y;
}s[5];
bool cmp(In a ,In b)
{
return a.x<b.x;
}
int main()
{
int i;
for (i=0;i<5;i++)
scanf("%d%d",&s[i].x,&s[i].y);
sort(s,s+5,cmp);
for(i=0;i<5;i++) printf("%d %d\n",s[i].x,s[i].y);
return 0;
}
//4、利用sort对结构体二级排序:
[b]如以下程序中,先按照结构体中的x由小到大的顺序,[b]对结构体排序,如果x相等,在比较y。改变cmp函数中的比较符号,可以将排序改成按升序还是降序。[/b]
[/b]

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
struct In
{
int x;
int y;
}s[5];
int cmp(In a,In b)
{
if(a.x!=b.x) return a.x<b.x;
return a.y<b.y;
}
int main()
{
int i;
for (i=0;i<5;i++)
scanf("%d%d",&s[i].x,&s[i].y);
sort(s,s+5,cmp);
for(i=0;i<5;i++) printf("%d %d\n",s[i].x,s[i].y);
return 0;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 标准库 排序 STL sort