Набросок простого алгоритма для сортировки элементов массива.
Разминка для мозга: Ручная сортировка массивов пузырьком на php.
29.05.2017
1_array.php (Download)
<?php $a = array(); $a[] = 10; $a[] = 1; $a[] = 5; $a[] = -1; $a[] = 40; $a[] = 30; $a[] = 3; echo '<pre>'; print_r($a); echo '</pre><hr/>'; $iLen = count($a); for ($i=0; $i<$iLen; $i++) { $iMin = $a[$i]; $iMinPos = $i; for ($j=$i; $j<$iLen; $j++) { if ($a[$j] < $iMin) { $iMin = $a[$j]; $iMinPos = $j; } } if ($iMinPos != $i) { $iTMP = $a[$i]; $a[$i] = $a[$iMinPos]; $a[$iMinPos] = $iTMP; } } echo '<pre>'; print_r($a); echo '</pre>'; ?>
2_array.php (Download)
<?php /** * Меняет местами 2а элемента массива * * @param array $a Массив * @param int $x1 Координатв 1го элемента * @param int $y1 * @param int $x2 Координатв 2го элемента * @param int $y2 ... * @return array */ function swap($a, $x1, $y1, $x2, $y2) { $iTmp = $a[$x1][$y1]; $a[$x1][$y1] = $a[$x2][$y2]; $a[$x2][$y2] = $iTmp; return $a; } $iCol = 2; $iRow = 3; $a = array(); for ($i=0; $i<$iCol; $i++) { for ($j=0; $j<$iRow; $j++) { $a[$i][$j] = rand(-10, 10); } } echo '<pre>'; print_r($a); echo '</pre><hr/>'; for ($i=0; $i<count($a); $i++) { for ($j=0; $j<count($a[$i]); $j++) { $iMinVal = $a[$i][$j]; $iMinPosX = $i; $iMinPosY = $j; for ($n=$i; $n<count($a); $n++) // 0? { for ($m=0; $m<count($a[$n]); $m++) // 0? { // echo $iMinVal.'<br>'; if ($a[$n][$m] < $iMinVal) { $iMinVal = $a[$n][$m]; $iMinPosX = $n; $iMinPosY = $m; } } } if ( ($iMinPosX != $i) OR ($iMinPosY != $j) ) { $a = swap($a, $i, $j, $iMinPosX, $iMinPosY); } } } echo '<pre>'; print_r($a); echo '</pre>'; ?>