PHP数组 阅读 4412
PHP数组 第9章 排序

PHP数组 第9章 排序

2016-07-09 • lulubin

一、排序的两大类

https://file.lulublog.cn/images/3/2022/08/JkY8ceEKhluEhsH77EEC4EctijHkYe.png?sign=d9bcd960f68ccb773e9c3f8256c6c6e3&t=6acfa700

二、冒泡排序法

①、基本思想

https://file.lulublog.cn/images/3/2022/08/kKK601uxd6OJUzfoUfzUJjKYFuO6uI.png?sign=345dfad9fc41f2c9e776318adea01df7&t=6acfa700

②、案例分析:从小到大排序

https://file.lulublog.cn/images/3/2022/08/yj3arfJVASQvBDFB3d53FZRvFsd5bV.png?sign=cdb5e47fa39961b775d22047550a2987&t=6acfa700

https://file.lulublog.cn/images/3/2022/08/AiiI2Fa20E2amgByP2PwtemMzFaA22.png?sign=7c2b7f72442388cb7e1a247594fc936e&t=6acfa700

三、选择排序法

①、基本思想

https://file.lulublog.cn/images/3/2022/08/HBghqh6QhNdC8Z8BbGNn6nND2BggS5.png?sign=814fa88e2ca73438fe970277f35ef79f&t=6acfa700

②、案例分析:从小到大排序

https://file.lulublog.cn/images/3/2022/08/xd1Ay5skCCZA01KcD1SaSd0VsV1FaC.png?sign=9345b4e19d662590e2752cf960c58490&t=6acfa700

https://file.lulublog.cn/images/3/2022/08/wXEObBObLgfXpXG3xLCUcZCzEs5PS3.png?sign=fc42e159909d29db6cf0ccfe2f4a446c&t=6acfa700

四、插入排序法

分三种:插入排序法、希尔排序法、二叉树排序法

①、基本思想

https://file.lulublog.cn/images/3/2022/08/uA1gYgB38igaG3OYZA14W3iHHw4G55.png?sign=8035c9a694752e897053909f3e7ad983&t=6acfa700

②、案例分析

function insertSort(&$arr)
{
    //先默认下表为0这个数已经有序
    for($i=1;$i=0 && $insertVal<$arr[$insertIndex]){
            //把较大的数后移
            $arr[$insertIndex+1] = $arr[$insertIndex];
            $insertIndex--;
        }
        //插入(这时为$indexVal找到适当的位置了)
        $arr[$insertIndex+1] = $insertVal;
    }
}

https://file.lulublog.cn/images/3/2022/08/q88zEtIZiJtjeR7izslEEJJ8Ehn8h8.png?sign=49f4066dce12d90de56c5364ee0c4c06&t=6acfa700

五、快速排序法

https://file.lulublog.cn/images/3/2022/08/b32xHD9U22R9i9N79R9XhrUS3Iui2w.png?sign=d59e0683361d1e34171a3bac284565f6&t=6acfa700

https://file.lulublog.cn/images/3/2022/08/IK8IXEI3xaARbEQx8KLzeqzkkikA3g.png?sign=b1500e45af71bb8355dc52b55d77e7dd&t=6acfa700

六、总结

①、数组默认传递的是值,不是地址。如果要传递地址 ,用&

②、从效率上看:冒泡排序法 > 选择排序法 > 插入排序法

七、二维数组排序

//二维数组排序, $arr是数据,$keys是排序的健值,$order是排序规则,1是升序,0是降序
function array_sort($arr, $keys, $order=0) {
    if (!is_array($arr)) {
    return false;
  }
  $keysvalue = array();
  foreach($arr as $key => $val) {
    $keysvalue[$key] = $val[$keys];
  }
  if($order == 0){
    asort($keysvalue);
  }else {
    arsort($keysvalue);
  }
  reset($keysvalue);
  foreach($keysvalue as $key => $vals) {
    $keysort[$key] = $key;
  }
  $new_array = array();
  foreach($keysort as $key => $val) {
    $new_array[$key] = $arr[$val];
  }
  return $new_array;
}

打赏

×

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开微信扫一扫,即可进行扫码打赏哦