请问各位大神sort的compare函数可以写成递归形式吗,试着写了但是没有输出,还是说代码有问题
compare函数可以写成递归形式,但是一定要保证传入的两个参数为偏序关系,即满足下列条件:
反自反性:compare(a,a)==false;
反对称性:若compare(a,b)==true,则compate(b,a)==false,反之亦然
传递性:若compare(a,b)==true,compare(b,c)==true,则compare(a,c)==true
如果博主不太理解,可以暂时把比较函数理解为小于号,既bool compare(int a,int b){return a<b; },小于号满足的性质与比较函数需要满足的性质相似。
如果不满足,好一点的编译器可能报错invalid compatator,稍差一点的会陷入死循环或者栈溢出。
望博主采纳~~
可以写成递归形式,比如说你要比较树上的两个节点下所有子节点的权重和,来作为比较依据,那么显然就是递归啦。
但是为什么没有输出,那就是你哪里写错了。
compare函数以最终返回的值为准,递归要注意递归必须要有能满足的终结条件。
cmp函数不论怎样写,能返回 真 和 假 就行了。你递归没有输出结果可能是卡入死循环了,发源码过来我可以帮你看看