<?php
$arr = [
[15, 16, 8, 1],
[2, 3, 4, 7],
[9, 11, 19, 6]
];
$sortedArr = [];
function bubbleSortRowCol($arr) {
$colCount = 0;
$tempArr = [];
$columnArr = [];
foreach($arr as $key => $row) {
$tempArr[$key] = bubbleSort($row);
$colCount = count($row);
}
for($i = 0; $i < $colCount; $i++) {
$columnArr[] = bubbleSort(array_column($arr, $i));
}
if($columnArr !== $sortedArr) {
bubbleSortRowCol($columnArr);
}
return $tempArr;
}
function fullSortArr($arr) {
$fullArr = [];
$tempArr = [];
$countArr = [];
$n = 0;
foreach($arr as $value) {
$fullArr = array_merge($fullArr, $value);
$countArr[] = count($value);
}
asort($fullArr);
foreach($countArr as $key => $length) {
$tempArr[] = array_slice($fullArr, $n, $length);
$n += $length;
}
return $tempArr;
}
function bubbleSort($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;
}
$sortedArr = fullSortArr($arr);
print_r(bubbleSortRowCol($arr));
preferences:
56.86 ms | 402 KiB | 5 Q