1. 冒泡排序
比拟相邻的元素。如果第一个比第二个大,就替换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最初一对。这步做完后,最初的元素会是最大的数。针对所有的元素反复以上的步骤,除了最初一个
function bubbleSort($arr){      for($i=0;$i<count($arr);$i++) {          for($j=$i+1;$j<count($arr); $j++) {              if ($arr[$j] > $arr[$i]) {                  $arr[$j] = $arr[$j] + $arr[$i];                  $arr[$i] = $arr[$j] - $arr[$i];                  $arr[$j] = $arr[$j] - $arr[$i];            }        }    }      return $arr;}
  1. 疾速排序
从数列中挑出一个元素,作为基准;
从新排序数列,所有元素比基准值小的摆放在基准后面,所有元素比基准值大的摆在基准的前面(雷同的数能够到任一边)。在这个分区退出之后,该基准就处于数列的两头地位。递归地把小于基准值元素的子数列和大于基准值元素的子数列排序;
function quickSort($arr){    $arrLength = count($arr);    if ($arrLength <= 1) {        return $arr;    }    $divider = $arr[0]; // 获取两头值    $left = [];    $right = [];    for ($i=1; $i<$arrLength; $i++) {        if ($divider < $arr[$i]) {            $right[] = $arr[$i];    // 小于两头值的放左边        } else {            $left[] = $arr[$i];     // 大于两头值的放右边        }    }    // 递归排好另外两侧    $left = quickSort($left);    $right = quickSort($right);        return array_merge($left, [$divider], $right);}
  1. 抉择排序

    首先在未排序序列中找到最小(大)元素,寄存到排序序列的起始地位。再从残余未排序元素中持续寻找最小(大)元素,而后放到已排序序列的开端。反复第二步,直到所有元素均排序结束。
function selectSort($arr){    $len = count($arr);    for ($i = 0; $i < $len - 1; $i++) {        $minIndex = $i;        for ($j = $i + 1; $j < $len; $j++) {            if ($arr[$j] < $arr[$minIndex]) {                $minIndex = $j;            }        }        $temp = $arr[$i];        $arr[$i] = $arr[$minIndex];        $arr[$minIndex] = $temp;    }    return $arr;}
  1. 二维数组依据某个值来排序
利用 array_multisort 函数的排序特点来实现
$arr=[    [        'name'=>'StuA',        'age'=>28    ],    [        'name'=>'StuB',        'age'=>14    ],    [        'name'=>'StuC',        'age'=>59    ],    [        'name'=>'StuD',        'age'=>23    ],    [        'name'=>'StuE',        'age'=>23    ],    [        'name'=>'StuF',        'age'=>21    ],];// 依据 age 键来排序array_multisort(array_column($arr,'age'),SORT_DESC,$arr);print_r($arr);