为了账号安全,请及时绑定邮箱和手机立即绑定

这里的cmp是干吗用的呢?如果cmp为true和false是会出现怎样的排序呢?

这里的cmp是干吗用的呢?如果cmp为true和false是会出现怎样的排序呢?

小怪兽爱吃肉 2022-11-18 17:13:34

bool cmp(int a,int b)
{
return a>b;
}
排序的时候就写sort(a,a+100,cmp);
假设自己定义了一个结构体node
struct node{
int a;
int b;
double c;
}

查看完整描述

2 回答

?
明月笑刀无情

TA贡献1543条经验 获得超4个赞

cmp实际上是一个函数模板,sort在调用时,是一个通用的过程。你可以假想sort是一个小机器人,能够在一个仓库里将货架上的货物进行排序。你第一次要求机器人“按照大小排序”,于是机器人花了几分钟完成了大小排序,第二次你要求机器人“按照重量排序”,于是机器人再次回到仓库,对同样的货物进行排序,不同的是这次并不按照大小,而是按照重量进行排序。

在这个的例子里,cmp函数决定了排序的方法,也就是重量、大小还是长度等等不同维度的东西。因为你的例子sort数据都是整数,因此看不出来这个函数的威力,如果输入的数据是struct,每个数据由不同的属性,比如上面例子的尺寸大小、重量甚至颜色等等,那么cmp函数写法就很有意思了

查看完整回答
反对 回复 2022-11-22
?
牛魔王的故事

TA贡献1546条经验 获得超3个赞

这个函数传的是数组首地址,所以不需要返回值,for循环是需要大括号的。 改了一下: void sort(int array[],int n) { int i,j,k,temp; for(i=0;i<n-1;i++) {k=i; for(j=k+1;j<n;j++) if(array[k]>array[j]) k=j; temp=array[i]; array[i]=array[k]; array[k]=temp; } }

查看完整回答
反对 回复 2022-11-22

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信