简单的sort排序

来源:互联网 发布:汉聚网络可靠吗 编辑:程序博客网 时间:2024/05/20 00:36

1104.数据排序

C++中的sort函数的头文件是#include<algorithm>;

sort函数的三个参数

第一个:开始的地址

第二个:结束的地址

第三个:排序函数,第三个参数可以不写,此时默认升序排列

     sort函数使用模板:
           sort(start,end,排序方法)
使用sort()函数对5个数进行排序,实现的是从小到大
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
     int a[10]={2,7,4,1,0};
     for(int i=0;i<5;i++)
          cout<<a[i]<<endl;
     sort(a,a+5);
     for(int i=0;i<5;i++)
         cout<<a[i]<<endl;
     return 0;
}

实现从大到小排列

#include<iostream>

#include<algorithm>

using namespacestd;

struct  S                                 //自己定义了一个结构体  S 

{

       int a;    

}a[100];

bool cmp(S x, S y)                           //要定义成bool

{

            return x.a > y.b;       

}                                        //通过编写的cmp函数可使数据降序排列

int main()
{
      int a[10]={2,7,4,1,0};
      for(int i=0;i<5;i++)
          cout<<a[i]<<endl;
      sort(a,a+5,cmp);                  //调用cmp函数进行排序
      for(int i=0;i<5;i++)
          cout<<a[i]<<endl;
      return 0;
}
二级排序

struct S

{

       int a;

       int b;

}a[5];

bool cmp(S  x, S  y)

{

       if(x.a !=y.a)       return x.a < y.a;                  //  !=比<  > 简便

       else    return x.b > y.b;                               //先根据a升序排列,若相等按照b降序排列      

}

int main()

{

       for(int i=0;i<5;i++)

      {

              scanf("%d%d",&a[i].a,&a[i].b);

      }

      sort (a,a+5,cmp);

      for(int j=0;j<5;j++)

      {

             cout<<a[j].a<<'   '<<a[j].b;

      }

return 0;

}



该题即需用二级排序

#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;
struct s
{
    int shuju;
    int xuhao;
    int num;
}a[100005];
bool comp(s a,s b)
{
    if ( a.shuju<b.shuju )return 1;
    else if(a.shuju>b.shuju)return 0;
    else{
        if(a.num<b.num)return 1;
        else return 0;
    }
}
int main()
{
    int i=0;
    while(scanf("%d %d",&a[i].xuhao,&a[i].shuju)!=EOF)
    {
        a[i].num=i;
        i++;
    }
    sort(a,a+i,comp);
    for(int j=0;j<i;j++)
    {
        printf("%d %d\n",a[j].xuhao,a[j].shuju);
    }
    return 0;
}





原创粉丝点击