C++ sort函数的基本运用

以int为例的基本数据类型的sort使用

#include
#include
#include
using namespace std;
int main()
{
    int a[5]={1,3,4,2,5};
    sort(a,a+5);
    for(int i=0;i<5;i++)
            cout<

 

因为没有cmp参数,默认为非降序排序,结果为:

1 2 3 4 5

若设计为非升序排序,则cmp函数的编写:

bool cmp(int a,int b)

{

  return a>b;

}

其实对于这么简单的任务(类型支持“<”、“>”等比较运算符),完全没必要自己写一个类出来。标准库里已经有现成的了,就在functional里,include进来就行了。functional提供了一堆基于模板的比较函数对象。它们是(看名字就知道意思了):equal_to、not_equal_to、greater、greater_equal、less、less_equal。对于这个问题来说,greater和less就足够了,直接拿过来用:

  • 升序:sort(begin,end,less());
  • 降序:sort(begin,end,greater()).
  • int  main ( )
    {
          int a[20]={2,4,1,23,5,76,0,43,24,65},i;
          for(i=0;i<20;i++)
              cout<());
          for(i=0;i<20;i++)
              cout<

     

    引用数据类型string的使用

  • 一个字符串间的个字符排序:
  • 使用迭代器可以完成顺序排序

结果:空格dehllloorw

使用反向迭代器可以完成逆序排序

#include
#include
#include
using namespace std;
int main()
{
    string str("hello world");
    sort(str.rbegin(),str.rend());
    cout<

 

结果:wroolllhde空格

字符串间的比较排序

 

#include
#include
#include
using namespace std;
int main()
{
    string a[4];
    for(int i=0;i<4;i++)
        getline(cin,a[i]);
    sort(a,a+4);
    for(int i=0;i<4;i++)
        cout<

 

以结构体为例的二级排序

 

#include
#include
#include
using namespace std;
struct link
{
    int a,b;
};
bool cmp(link x,link y)
{
    if(x.a==y.a)
        return x.b>y.b;
    return x.a>y.a;
}
int main()
{
    link x[4];
    for(int i=0;i<4;i++)
        cin>>x[i].a>>x[i].b;
    sort(x,x+4,cmp);
    for(int i=0;i<4;i++)
        cout<

你可能感兴趣的:(C++ sort函数的基本运用)