Всем привет! Подскажите где я не прав.
Я решил отсортировать массив по возрастанию. Без использования функции.
$a = array(2,7,200,6);
$b = $a;
for($i=0; $i < count($a); ++$i)
{
$save_j = $i;
for($j = $i; $j < count($a); ++$j)
{
if ($a[$i] < $a[$j])
{
$a[$i] = $a[$j];
$save_j = $j;
}
}
$a[$save_j] = $b[$i];
}
Но на выходе получаю
array (size=4)
0 => int 200
1 => int 7
2 => int 6
3 => int 6
А этот вариант верный
$a = array(2,200,7,300,4,44,5,102);
for($i=0; $i < count($a); ++$i)
{
$save_j = $i;
$save_max = $a[$i];
for($j = $i; $j < count($a); ++$j)
{
if ($save_max < $a[$j])
{
$save_max = $a[$j];
$save_j = $j;
}
}
$a[$save_j] = $a[$i];
$a[$i] = $save_max;
}
array (size=8)
0 => int 300
1 => int 200
2 => int 102
3 => int 44
4 => int 7
5 => int 5
6 => int 4
7 => int 2
По мне они одинаковые, да и логика вроде верная.
Но где-то я ошибся, а где понять не могу.