пузырьковая сортировка многомерного массива php

1

Мне нужно отсортировать массив 2d

   $items = array(
   array(15, 16, 8, 1),
   array(2, 3, 4, 7),
   array(9, 11, 19, 6,)
   );

с мусором типа пузыря, чтобы получить что-то вроде этого

  1,2,3,4
  6,7,8,9
  11,15,16,19

Я не могу найти сортировку пузырьков для нескольких массивов. Вы можете мне помочь?

Я пробовал что-то вроде этого, но он не работает:

 $iterations = 0;
 for ($i = 0; $i < count($array); $i++)
 {
   $iterations++;
   $hasSwap = false;
     for ($j = 0; $j < count($array) - 1 - $i; $j++) 
      {
        $iterations++;
            if ($array[$j] > $array[$j + 1]) 
            {
              $hasSwap = true;
              swap($array, $j, $j + 1);
            }
         }

        if (!$hasSwap) 
        {
          break;
        }
   }
   var_dump($iterations);
   print_r($array);
  • 0
    Это не имеет смысла для меня. Если вы собираетесь менять местами элементы между массивами, то они не являются отдельными массивами.
  • 0
    Объедините массивы в 1, выполните сортировку по пузырькам, разбейте на части по 4 элемента.
Теги:
arrays
multidimensional-array
2d
bubble-sort

2 ответа

1

Вы обрабатываете три массива как один. Так

  1. Создайте из них один массив
  2. Использовать стандартную сортировку пузырьков
  3. Сгруппируйте их в три массива.
0

Вероятно, кому-то будет полезно это решение. Здесь необходимо было отсортировать элементы пузырьками на основе значения 'COUNT' в каждом элементе.

$fruits
(
    [0] => Array
        (
            [NAME] => Banana
            [COUNT] => 7
        )
    [1] => Array
        (
            [NAME] => Orange
            [COUNT] => 2
        )
    [2] => Array
        (
            [NAME] => Apple
            [COUNT] => 24
        )
)

usort($fruits, function($a, $b)
{
    if($a['COUNT'] > $b['COUNT'])
    {
      return -1;
    }
    if($a['COUNT'] < $b['COUNT'])
    {
      return 1;
    }
    return 0;
});

Дополнительные примеры и подробные сведения об использовании: usort

Ещё вопросы

Сообщество Overcoder
Наверх
Меню