У меня есть эта простая функция быстрой сортировки (я получил ее от дяди "G")
function quicksort( &$list, $l , $r ) {
$i = $l;
$j = $r;
$tmp = $list[(int)( ($l+$r)/2 )];
do {
while( $list[$i] < $tmp )
$i++;
while( $tmp < $list[$j] )
$j--;
if( $i <= $j ) {
$w = $list[$i];
$list[$i] = $list[$j];
$list[$j] = $w;
//_swp($list[$i],$list[$j]);
$i++;
$j--;
}
}while( $i <= $j );
if( $l < $j )
quicksort($list, $l, $j);
if( $i < $r )
quicksort($list, $i, $r);
return $list;
}
И у меня есть эта маленькая функция для обмена двумя переменными.
function _swp(&$a,&$b){
$a=$a+$b;
$b=$a-$b;
$a=$a-$b;
}
Как получилосьЯ не могу использовать _swp ($ a, $ b) в функции quicksort
вместо этих строк?
$w = $list[$i];
$list[$i] = $list[$j];
$list[$j] = $w;
Если я закомментирую эти 3 строки кода и введу вызов функции _swp, я получу ошибкурезультаты ...
Пожалуйста, объясните.
С уважением