2015-11-29 2 views
1

Я должен сортировать 2d массивпузырьковой сортировки многомерный массив PHP

$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 элементов. –

ответ

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