【发布时间】:2022-01-09 17:41:51
【问题描述】:
我下面有一个数组号,
$arr = [2,5,1,12,-5,4,-1,3,-3,20,8,7,-2,6,9]
预期的输出必须是:
-5,-3,-2,-1,1,20,12,9,8,7,2,3,4,5,6
排序必须每5个数组从升序变为降序,反之亦然。因此,如果前 5 位按升序排序,则后 5 位必须按降序排序。
但我得到了:
-5,-3,-2,-1,1,2,3,4,5,6,7,8,9,12,20
在我的代码下面:
$arr = array(2,5,1,12,-5,4,-1,3,-3,20,8,7,-2,6,9);
function arr_sort($array) {
// get the size of array
$countArr = count($array);
for ($i=0; $i<$countArr; $i++) {
for ($j=$i; $j<$countArr; $j++) {
if ($array[$i] > $array[$j]) {
$temporary = $array[$i];
$array[$i] = $array[$j];
$array[$j] = $temporary;
}
}
}
// order ascending and descending
$array = implode(',', $array);
return $array;
}
print_r(arr_sort($arr));
【问题讨论】:
-
我还是不明白你是怎么得到输出的,分组是怎么工作的?你只是把第一个数组分成几组然后排序还是先排序然后再分成几组再使用?
-
我想我会创建两个数组,一个向上排序,一个向下排序,然后每次取 5 个。
-
我的意思是第一次排序是升序,但是排序后的数组中每5个数的倍数,排序方式由升序变为降序,每5个数的倍数再变化一次。
-
所以你想先对输入的正常数组进行排序,然后然后将这些排序的数字分成五个一组?然后每隔一秒反转这些组的顺序?
-
我看了三遍,包括cmets,我也不明白如何得到想要的输出。