Набросок простого алгоритма для сортировки элементов массива.
Разминка для мозга: Ручная сортировка массивов пузырьком на 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>';
?>