引自here:
比较函数必须返回小于,等于或的整数 如果第一个参数被认为是大于零 分别小于,等于或大于第二个。
在我看来,如果第一个大于第二个,cmp_function
只需要返回1
。
为什么需要所有3
个案例?
更新
function bubble($list)
{
$length = count($list) - 2;
$sorted = false;
while(!$sorted)
{
$sorted = true;
foreach(range(0,$length) as $i)
{
if($list[$i] > $list[$i + 1])
{
$sorted = false;
list($list[$i],$list[$i + 1]) = array($list[$i + 1],$list[$i]);
}
}
}
return $list;
}
答案 0 :(得分:2)
这样可以区分<
,==
和>
。
这类似于回调的要求,例如: C qsort
(据我所知,usort
可以在内部使用qsort
实现。
可以编写一个只需要两值谓词的搜索例程,但usort
恰好不是其中之一。
答案 1 :(得分:1)
事实上,你几乎是对的,你不需要3个不同的值。
但是,1个单值是不够的,需要2个值: