美文网首页
php实现冒泡排序

php实现冒泡排序

作者: 云龙789 | 来源:发表于2018-04-26 14:06 被阅读26次

原数组

$arr = [3,2,5,4,6];
// 1.先把数组for 循环遍历 每次遍历组合成新的数组
for ($y=0; $y< count($arr)-1; $y++){
    // 2. 这层遍历是 按照$y的键取这次遍历的最大值
    for ($x=$y+1; $x<count($arr); $x++){
        // 3.固定取键为$arr[$y]['n'] 的最大值 ,要跟$arr[$x]取比较
        if ($arr[$y] < $arr[$x]){
            $tmp = $arr[$y];
            $arr[$y] = $arr[$x];
            $arr[$x] = $tmp;
// 打印1   /要在if内打印  再数组外,数组无变化,打印五意义
       // echo '<pre>';
       // print_r($arr);
        }

    }
   // 打印1 die;

// 打印2
//    echo '<pre>';
//    print_r($arr);
}

思路解析

一位数组,二维数组都是一样的。此处我按照二维数组来做
1.首先把二维数组for循环一遍,让0号位与后面的值比较,
如果后面的值比0号位大,则调换位置,此时第一个大于0号位的值是5,得到下面数组1.Array,也就是$arr[0]=5,$arr[2]=3 其他的键值对不变
2.此时第一个内层for循环还没有结束,继续循环会得到6大于5
3.于是得到2.Array $arr[0]=6,  $arr[4]=5

打印1打开得到
1 Array
(
    [0] => 5
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 6
)
2.Array
(
    [0] => 6
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)

4这样循环一次之后,我们得到了最大值,放在0号位即可。我们要开始找1号位的最大值了
  所以第二次循环要找的是$arr[$y]  此时$y=1
  因为我们要找的是1号位,那么对于$x 我们从第2号位开始比较即可,
所以$x=$y+1
5. 对于内层循环,因为每次我们需要比较所有的数,所以要到最后一位count($arr);
6.但是对于外层循环  $y   比如我们一共5位数,最大键是4,$y< count($arr)-1; 得到的是$y<4,
也就是循环4次即可,可以省略一次,这个是因为我们的原则是每次循环取出最大值,第四次也是取出最大值,
那么最后一个肯定是最小值 不需要排序了

按照二维数组中某个值大小排序

原数组

我实际项目中是json  我直接转下数组好了 不再直接写了
$json = '[
        {
            "name": "我是3",
            "n": "3"
        },
        {
            "name": "我是2",
            "n": "2"
        },
        {
            "name": "我是5",
            "n": "5"
        },
        {
            "name": "我是4",
            "n": "4"
        },
        {
            "name": "我是6",
            "n": "6"
        }
    ]';

$arr = json_decode($json,true);

冒泡排序的实现

// 冒泡排序
// 1.先把数组for 循环遍历 每次遍历组合成新的数组
for ($y=0; $y< count($arr)-1; $y++){
    // 2. 这层遍历是 按照$y的键取这次遍历的最大值
    for ($x=$y+1; $x<count($arr); $x++){
        // 3.固定取键为$arr[$y]['n'] 的最大值 ,要跟$arr[$x]取比较
        if ($arr[$y]['n'] < $arr[$x]['n']){
            $tmp = $arr[$y];
            $arr[$y] = $arr[$x];
            $arr[$x] = $tmp;
        }
    }
}

相关文章

  • 排序算法

    冒泡排序 PHP OC 快速排序

  • PHP 冒泡排序法

    PHP 冒泡排序法

  • PHP实现冒泡排序

    冒泡排序属于交换排序,是一种稳定排序,平均时间复杂度为O(n^2),最好情况时间复杂度为O(n),最坏情况时间复杂...

  • PHP 实现冒泡排序

    导语 冒泡排序是相对比较简单、常用的算法,同时在面试中也是最常被问到的问题。自认能力不够,不能有更深的理解,下面就...

  • 冒泡排序(php实现)

    什么是冒泡排序 冒泡排序的英文Bubble Sort,是一种最基础的交换排序。大家一定都喝过汽水,汽水中常常有许多...

  • php实现冒泡排序

    原数组 思路解析 按照二维数组中某个值大小排序 原数组 冒泡排序的实现

  • php实现冒泡排序

    总结冒泡排序 1:相邻的两个数的比较 2:两层循环 第一层是决定多少轮,第二层决定每层需要多少次 3:临时变量存放...

  • PHP实现冒泡排序

    一个程序应包括:对数据的描述:在程序中要指定数据的类型和数据的组织形式,即数据结构(data structure)...

  • PHP实现:冒泡排序

  • PHP实现冒泡排序

    笔试时,常常遇到要手写实现PHP冒泡排序,虽说挺恶心的,但是还是得写出来

网友评论

      本文标题:php实现冒泡排序

      本文链接:https://www.haomeiwen.com/subject/vhiplftx.html