首页 > 代码库 > 利用标准库中sort函数进行排序

利用标准库中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函数进行排序