<?php
error_reporting(-1);

function generateArray($n) {
	$array = [];
	for ($i=0; $i<=$n; $i++) {
		$array[$i] = mt_rand(10,99);
	}
	return $array;
}

function printArray($array) {
	echo implode($array, ", ") . ".\n";
}


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

function sortArrayBubble2($array) {
	$sorted = FALSE;
	while ($sorted == FALSE) {
		$sorted = TRUE;
		for ($i=0; $i<count($array)-1; $i++) {
			if ($array[$i]>$array[$i+1]) {
				list($array[$i], $array[$i+1]) = [$array[$i+1], $array[$i]];
				$sorted = FALSE;
			}
		}
	}
	return $array;
}

function sortArrayTricky($array) {
	$n = count($array);
	for ($i=0; $i<$n; $i++) {
		$newArray[$i] = min($array);
		unset($array[array_search(min($array), $array)]);
	}
	return $newArray;
}

function sortArrayTrickyNoGay($array) {
	$n=count($array)-1;
	for ($i=0; $i<$n; $i++) {
		$minValue = $array[$i];
		for ($j=$i; $j<=$n; $j++) {
			if ($array[$j] < $minValue) {
				$minValue = $array[$j];
				$minKey = $j;
			}
		
		}
	list($array[$i], $array[$minKey]) = [$array[$minKey], $array[$i]];	
	}
	return $array;
}

$a = generateArray(15);

echo "Сгенерированный массив: ";
printArray($a);

$b = sortArrayBubble1($a);
echo "Сортировка пузырьком:   ";
printArray($b);

$c = sortArrayBubble2($a);
echo "пузырек 2.0:            ";
printArray($c);

$d = sortArrayTricky($a);
echo "Хитрый способ:          ";
printArray($d);

$e = sortArrayTrickyNoGay($a);
echo "Без зашкварного min():  ";
printArray($e);
