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

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

小怪兽爱吃肉
浏览 79回答 2
2回答

明月笑刀无情

cmp实际上是一个函数模板,sort在调用时,是一个通用的过程。你可以假想sort是一个小机器人,能够在一个仓库里将货架上的货物进行排序。你第一次要求机器人“按照大小排序”,于是机器人花了几分钟完成了大小排序,第二次你要求机器人“按照重量排序”,于是机器人再次回到仓库,对同样的货物进行排序,不同的是这次并不按照大小,而是按照重量进行排序。在这个的例子里,cmp函数决定了排序的方法,也就是重量、大小还是长度等等不同维度的东西。因为你的例子sort数据都是整数,因此看不出来这个函数的威力,如果输入的数据是struct,每个数据由不同的属性,比如上面例子的尺寸大小、重量甚至颜色等等,那么cmp函数写法就很有意思了

牛魔王的故事

这个函数传的是数组首地址,所以不需要返回值,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; } }
打开App,查看更多内容
随时随地看视频慕课网APP