PHP数组 第9章 排序 PHP数组 第9章 排序

2016-07-09

一、排序的两大类

https://file.lulublog.cn/images/3/2022/08/JkY8ceEKhluEhsH77EEC4EctijHkYe.png

二、冒泡排序法

①、基本思想

https://file.lulublog.cn/images/3/2022/08/kKK601uxd6OJUzfoUfzUJjKYFuO6uI.png

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

https://file.lulublog.cn/images/3/2022/08/yj3arfJVASQvBDFB3d53FZRvFsd5bV.png

https://file.lulublog.cn/images/3/2022/08/AiiI2Fa20E2amgByP2PwtemMzFaA22.png

三、选择排序法

①、基本思想

https://file.lulublog.cn/images/3/2022/08/HBghqh6QhNdC8Z8BbGNn6nND2BggS5.png

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

https://file.lulublog.cn/images/3/2022/08/xd1Ay5skCCZA01KcD1SaSd0VsV1FaC.png

https://file.lulublog.cn/images/3/2022/08/wXEObBObLgfXpXG3xLCUcZCzEs5PS3.png

四、插入排序法

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

①、基本思想

https://file.lulublog.cn/images/3/2022/08/uA1gYgB38igaG3OYZA14W3iHHw4G55.png

②、案例分析

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

五、快速排序法

https://file.lulublog.cn/images/3/2022/08/b32xHD9U22R9i9N79R9XhrUS3Iui2w.png

https://file.lulublog.cn/images/3/2022/08/IK8IXEI3xaARbEQx8KLzeqzkkikA3g.png

六、总结

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

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

七、二维数组排序

//二维数组排序, $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;
}

阅读 2841