<?php
$arr = [
[15, 16, 8, 1],
[2, 3, 4, 7],
[9, 11, 19, 6]
];
function bubbleSortRowCol(&$arr) {
$colCount = count($arr[0]);
$rowCount = count($arr);
$tempArr = [];
$columnArr = [];
foreach($arr as $key => $value) {
if($key % 2 === 0) {
$tempArr[$key] = bubbleSortAsc($value);
} else {
$tempArr[$key] = bubbleSortDesc($value);
}
}
var_dump($tempArr); echo PHP_EOL;
for($i = 0; $i < $colCount; $i++) {
$columnArr[$i] = bubbleSort(array_column($tempArr, $i));
}
var_dump($columnArr); echo PHP_EOL;
for($i = 0; $i < $rowCount; $i++) {
$tempArr[$i] = bubbleSort(array_column($columnArr, $i));
}
$arr = $tempArr;
}
function bubbleSortAsc(array $arr) {
$sorted = false;
while (false === $sorted) {
$sorted = true;
for ($i = 0; $i < count($arr)-1; ++$i) {
$current = $arr[$i];
$next = $arr[$i+1];
if ($next < $current) {
$arr[$i] = $next;
$arr[$i+1] = $current;
$sorted = false;
}
}
}
return $arr;
}
function bubbleSortDesc(array $arr) {
$sorted = false;
while (false === $sorted) {
$sorted = true;
for ($i = 0; $i < count($arr)-1; ++$i) {
$current = $arr[$i];
$next = $arr[$i+1];
if ($next > $current) {
$arr[$i] = $next;
$arr[$i+1] = $current;
$sorted = false;
}
}
}
return $arr;
}
function bSort($arr) {
bubbleSortRowCol($arr);
return $arr;
}
bSort($arr);
preferences:
42.04 ms | 402 KiB | 5 Q