Пузырьковая сортировка ассоциативного массива
// Пузырьковая сортировка одномерного ассоциативного массива в PHP
function BubbleSortAssociationArrayValues($arrSort = []) // функция пузырьковой сортировки ассоциативного массива (ключи остаются на месте, значения сортируем)
{
if (count($arrSort) === 0) return false; // пустой массив нет смысла сортировать, функция вернет лож
// алгоритм пузырьковой сортировки
foreach ($arrSort as $keyFirst => $valueFirst) { // получаем в цикле первую часть сверяемого значения массива
foreach ($arrSort as $keySecond => $valueSecond) { // получаем в подцикле вторую часть сверяемого значения массива
if ($arrSort[$keyFirst] < $arrSort[$keySecond]) { // если значение из массива по первому ключу меньше чем по второму ключу
list($arrSort[$keyFirst], $arrSort[$keySecond]) = [$arrSort[$keySecond], $arrSort[$keyFirst]]; // меняем местами значения в массиве сохраняя ключи
//list($keyFirst => $arrSort[$keyFirst], $keySecond => $arrSort[$keySecond]) = [$keyFirst => $arrSort[$keySecond], $keySecond => $arrSort[$keyFirst]]; // указывать ключи можно начиная с PHP 7.1
}
}
}
return $arrSort;
}
function BubbleSortAssociationArrayValuesAndKey($arrSort = []) // функция пузырьковой сортировки ассоциативного массива (ключи вместе со значениями сортируем по значениям)
{
if (count($arrSort) === 0) return false; // пустой массив нет смысла сортировать, функция вернет лож
// алгоритм пузырьковой сортировки
foreach ($arrSort as $keyFirst => $valueFirst) { // получаем в цикле первую часть сверяемого значения массива
foreach ($arrSort as $keySecond => $valueSecond) { // получаем в подцикле вторую часть сверяемого значения массива
if ($arrSort[$keyFirst] < $arrSort[$keySecond]) { // если значение из массива по первому ключу меньше чем по второму ключу
// переносим значение в конец массива
unset($arrSort[$keySecond]);
$arrSort[$keySecond] = $valueSecond;
}
}
}
return $arrSort;
}
function NewRandAssociationArray($sizeArray = 5) // функция генерации случайного ассоциативного массива, по умолчанию с 5-тью записями
{
$newArray = array(); // создадим пустой массив
$strForKey = '1234567890qwertyuiopasdfghjklzxcvbnm'; // набор символов для генерации ключей массива
while (count($newArray) < $sizeArray) { // если меньше или равно $sizeArray то выполняем цикл
// заполним массив случайными числовыми значениями и рандомными ключами в цикле
$var = rand(0, 100); // получаем случайное число для значения от 0 до 100
$key = (string)$strForKey[rand(0, strlen($strForKey)-1)] . $strForKey[rand(0, strlen($strForKey)-1)] . $strForKey[rand(0, strlen($strForKey)-1)]; // создаем ключ из трех случайных символов из $strForKey
if ((in_array($var, $newArray) === false) && (array_key_exists($key, $newArray)) === false) { // если такого значения и ключа еще нет в массиве, то добавим запись в массив
$newArray[$key] = $var;
}
}
return $newArray;
}
$testArr = NewRandAssociationArray(10); // создание нового массива
print_r($testArr); // дамп сгенерированного массива
print_r(BubbleSortAssociationArrayValues($testArr)); // дамп отсортированного ассоциативного массива, сортировка значений не перемещая ключи
print_r(BubbleSortAssociationArrayValuesAndKey($testArr)); // дамп отсортированного ассоциативного массива, сортировка по значениям с привязкой к ключам
Array - дамп сгенерированного ассоциативного массива
(
[ukk] => 40
[0qc] => 35
[p3y] => 86
[vh0] => 36
[gmi] => 2
[nvm] => 96
[ur0] => 34
[jk4] => 68
[lfl] => 66
[dzm] => 25
)
Array - дамп отсортированного ассоциативного массива, сортировка значений не перемещая ключи
(
[ukk] => 2
[0qc] => 25
[p3y] => 34
[vh0] => 35
[gmi] => 36
[nvm] => 40
[ur0] => 66
[jk4] => 68
[lfl] => 86
[dzm] => 96
)
Array - дамп отсортированного ассоциативного массива, сортировка по значениям с привязкой к ключам
(
[gmi] => 2
[dzm] => 25
[ur0] => 34
[0qc] => 35
[vh0] => 36
[ukk] => 40
[lfl] => 66
[jk4] => 68
[p3y] => 86
[nvm] => 96
)
php
sort
array
BubbleSort
Bubble
association
просмотров: 1114