码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-09-03 18:11:39      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:c++   标准库   排序   stl   sort   

//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由小到大的顺序,对结构体排序。改变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;
}

//4、利用sort对结构体二级排序:

如以下程序中,先按照结构体中的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;
}




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

标签:c++   标准库   排序   stl   sort   

原文地址:http://blog.csdn.net/yzj577/article/details/39030161

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!