排序数组而不使用临时变量

时间:2017-05-16 10:30:10

标签: php sorting

我正在做一个程序。其中有一个数组排序函数,如下所示

$arr= array(10,2,13,5,8);

for($i=0; $i<count($arr)-1; $i++)
{
    for($j=0; $j<count($arr)-1; $j++)
    {
        if($arr[$j]> $arr[$j+1]){
            $temp= $arr[$j+1];
            $arr[$j+1]= $arr[$j];
            $arr[$j]= $temp;
        }
    }

}
print_r($arr);

这里我使用temp变量临时存储值。

有没有办法在没有temp变量的情况下进行排序?

我不想使用任何内置的PHP函数执行此操作

2 个答案:

答案 0 :(得分:3)

$arr = array(10,2,13,5,8);

for($i=0; $i<count($arr)-1; $i++)
{
    for($j=0; $j<count($arr)-1; $j++)
    {
        if($arr[$j]> $arr[$j+1]){
            list($arr[$j],$arr[$j+1]) = array($arr[$j+1], $arr[$j]); 
        }
    }

}
print_r($arr);

如果它们是整数,则另一种交换方式是

$a = $a + $b; 
$b = $a - $b; 
$a = $a - $b;

答案 1 :(得分:0)

使用array-sort函数。在我的opion中,没有必要编写另一个数组排序函数。