//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; }
如以下程序中,按照结构体中的x由小到大的顺序,对结构体排序。改变cmp函数中的比较符号,可以将排序改成按升序还是降序。
#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; }
如以下程序中,先按照结构体中的x由小到大的顺序,对结构体排序,如果x相等,在比较y。改变cmp函数中的比较符号,可以将排序改成按升序还是降序。
#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; }
原文地址:http://blog.csdn.net/yzj577/article/details/39030161