简体   繁体   English

冒泡排序多维数组php

[英]bubble sort multidimensional array php

I have to sort 2d array我必须对二维数组进行排序

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

with bubble sort ant to get something like this用冒泡排序蚂蚁得到这样的东西

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

I can't find anywhere bubble sort for multiple arrays.我找不到多个数组的冒泡排序。 Can you help me?你能帮助我吗?

I tried something like this, but it isn't working:我试过这样的事情,但它不起作用:

 $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);

You are treating the three arrays as one.您将三个数组视为一个数组。 So所以

  1. Create one array out of them从中创建一个数组
  2. Use standard bubble sort使用标准冒泡排序
  3. Group them into three arrays.将它们分组为三个数组。

Probably someone will be useful this decision. 可能有人会对这个决定有用。 Here it was necessary to sort the elements by bubbles based on the value of 'COUNT' within each element. 在这里,有必要根据每个元素中'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;
});

More examples and detailed of using: usort 更多示例和使用详细说明: usort

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM