# 关于sort函数的入口函数cmp函数的一点心得

2 篇文章 0 订阅

#include <iostream>

#include <algorithm>

#include <vector>

using namespace std;

struct student

{

int Class;

int rank;

int age;

};

vector<student> stu;

bool cmp(const student &a,const student &b)

{

if(a.Class!=b.Class)

{

return a.Class<b.Class;

}

else if(a.rank!=b.rank)

{

return a.rank<b.rank;

}

else

{

return a.age<b.age;

}

}

int main()

{

student tmp;

int num = 5;

while(num--)

{

cin>>tmp.Class>>tmp.rank>>tmp.age;

stu.push_back(tmp);

}

sort(stu.begin(),stu.end(),cmp);

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

{

cout<<stu[i].Class<<"\t"<<stu[i].rank<<"\t"<<stu[i].age<<endl;

}

system("pause");

return 0;

}

1 4 1

1 3 3

2 3 3

2 3 1

4 2 3

ofahIUGH5092foiIUIOq2t02ogihaohgawi5209GHAOIUHG

#include <iostream>

#include <algorithm>

#define SIZE 100

#define Is_Num(x) (x<='9'&&x>='0')

#define Is_LowCase(x) (x>='a'&&x<='z')

#define Is_UpCase(x) (x>='A'&&x<'Z')

using namespace std;

bool cmp(const char &a,const char &b)

{

if(Is_Num(a)&&Is_Num(b))

{

return a<b;

}

else if(Is_LowCase(a)&&Is_LowCase(b))

{

return a<b;

}

else if(Is_UpCase(a)&&Is_UpCase(b))

{

return a<b;

}

else if(Is_Num(a)&&Is_LowCase(b))

{

return true;

}

else if(Is_Num(b)&&Is_LowCase(a))

{

return false;

}

else if(Is_Num(a)&&Is_UpCase(b))

{

return false;

}

else if(Is_Num(b)&&Is_UpCase(a))

{

return true;

}

else if(Is_LowCase(a)&&Is_UpCase(b))

{

return false;

}

else if(Is_LowCase(b)&&Is_UpCase(a))

{

return true;

}

}

int main()

{

char a[SIZE];

while(cin>>a)

{

int len = strlen(a);

sort(a,a+len,cmp);

cout<<"after sort:"<<endl;

cout<<a<<endl;

}

return 0;

}

15

3 4 -3 4 -5 -8 5 1 6 -2 5 -1 5 -3 -4

#include <iostream>

#include <algorithm>

#define SIZE 100

using namespace std;

bool cmp(const int &a,const int &b)

{

if(a<0&&b>0)

{

return true;

}

return false;

}

int main()

{

int array[SIZE];

int length;

while(cin>>length)

{

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

{

cin>>array[i];

}

sort(array,array+length,cmp);

cout<<"after sort:"<<endl;

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

{

cout<<array[i]<<" ";

}

}

return 0;

}

• 1
点赞
• 0
收藏
• 打赏
• 1
评论
02-02 4015
05-22 8843
08-07 1万+
11-02 1万+
10-04 5417
09-12 3562
07-28 3382
04-24 405
04-03 976
05-01 7154
07-16 1835

### “相关推荐”对你有帮助么？

• 非常没帮助
• 没帮助
• 一般
• 有帮助
• 非常有帮助

sjjwind

¥2 ¥4 ¥6 ¥10 ¥20

1.余额是钱包充值的虚拟货币，按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载，可以购买VIP、C币套餐、付费专栏及课程。