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

这里的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);假设自己定义了一个结构体nodestruct node{int a;int b;double c;}
查看完整描述

2 回答

?
明月笑刀无情

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

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

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

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

TA贡献1830条经验 获得超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
  • 2 回答
  • 0 关注
  • 76 浏览
慕课专栏
更多

添加回答

举报

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