<!DOCTYPE html>
<html>
<body>
<?php
function my_sort($a,$b)
{
if ($a==$b) return 0;
return ($a<$b)?-1:1;
}
$a=array(4,2,8,6);
usort($a,"my_sort");
$arrlength=count($a);
for($x=0;$x<$arrlength;$x++)
{
echo $a[$x];
echo "<br>";
}
?>
</body>
</html>
======================================================
一,这里的0 -1 1 和数组的排序有什么关系吗?假如把自定义函数比较的返回值0 -1 1都对挑掉,那排序又会怎么变,这有什么规则吗?这个函数,难道只能根据0 -1 1 来 只能进行升降序来排列吗?
二,自定义函数传入的两个值,是传入数组的两个值吗?还是传入一个值和他的键?如果是两个值的话,那一个数组里面那么多值,又是如何先后进行比较的呢?比如:9,8,6,3,1 按升序排列,是传入9和8,然后8放到9前面(8 9 6 3 1),再传入9 6(8 6 9 3 1)再传入9 3(86391)再传入91(86319)再传入86(68319)再传入83(63819)…………是一直这样重复比较几十几百次这样计算的(如果元素多的话,那工作量也太大的惊人了吧)?
百度了几个小时,都搞不懂这个函数是怎样工作的,求解,拜托了~
PHP usort函数相关问题
答案:2 悬赏:10 手机版
解决时间 2021-02-11 17:51
- 提问者网友:城市野鹿
- 2021-02-10 20:58
最佳答案
- 五星知识达人网友:狂恋
- 2021-02-10 21:16
unsort 里面一个是数组,一个是你要对中国数组进行排序的规则
既然是排序那就是比较大小了
0就是表示相等,1 是表示大, -1 表示小,
你改变了0 -1 1 的返回规则,那返回的东西就会发生改变,
在自定义函数中进行比较的就是数组里的两个值,进行比较的话肯定是有复杂度的,但是不一定是n方的复杂度,具体是怎么样的我不知道,但应该是nlog(n) 的复杂度,虽然是这样但是时间也不会消耗很多,计算机的计算大概是每秒 10 的 8 次方,还是很快的
既然是排序那就是比较大小了
0就是表示相等,1 是表示大, -1 表示小,
你改变了0 -1 1 的返回规则,那返回的东西就会发生改变,
在自定义函数中进行比较的就是数组里的两个值,进行比较的话肯定是有复杂度的,但是不一定是n方的复杂度,具体是怎么样的我不知道,但应该是nlog(n) 的复杂度,虽然是这样但是时间也不会消耗很多,计算机的计算大概是每秒 10 的 8 次方,还是很快的
全部回答
- 1楼网友:第四晚心情
- 2021-02-10 21:32
usort(array,sorttype),
第一个参数规定要排序的数组。
第二个参数用户自定义的函数。
函数必须设计为返回 -1, 0, 或 1,并应该接受两个供比较的参数,同时以类似下面这样的方式来工作:
•如果 a = b, 返回 0
•如果 a > b, 返回 1
•如果 a < b, 返回 -1
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯