php排序方法

//冒泡排序
$arr = array(5, 9, 7, 6, 1, 8, 13, 4);
$m = count($arr);//sizeof($arr,1)sizeof,第二个参数设置为1,将同时读取二维数组长度
for ($i = 1; $i <= $m; $i++) {
    $m -= 1;
    for ($j = 0; $j < $m; $j++) {
        if ($arr[$j] > $arr[$j + 1]) {
            $temp = $arr[$j];
            $arr[$j] = $arr[$j + 1];
            $arr[$j + 1] = $temp;
        }
    }
}
echo "<pre>";
var_dump($arr);
die;

 

//快速排序
$arr = array(6, 1, 2, 7, 9, 3, 4, 5, 10, 8);
function quick_sort($arr) {
    $count = count($arr);
    //校验
    if (!is_array($arr)) return FALSE;
    if ($count <= 1) return $arr;
    //开始
    $left = $right = array();
    for ($i = 1; $i < $count; $i++) {
        //判断当前元素的大小
        if ($arr[$i] < $arr[0]) {
            $left[] = $arr[$i];
        } else {
            $right[] = $arr[$i];
        }
    }
    $left = quick_sort($left);
    $right = quick_sort($right);
   
    //将所有的结果合并
    return array_merge($left, array($arr[0]), $right);
   
   
}
echo "<pre>";
print_r(quick_sort($arr));
die;

 

//选择排序
$arr = array(5, 9, 7, 6, 1, 8, 13, 4);
$count = count($arr);
for ($i = 0; $i < $count - 1; $i++) {
    for ($j = $i; $j < $count; $j++) {
        if ($arr[$i] > $arr[$j]) {
            $_temp = $arr[$i];
            $arr[$i] = $arr[$j];
            $arr[$j] = $_temp;
        }
    }
}
echo "<pre>";
var_dump($arr);
die;
 

 

posted @ 2018-03-12 17:05  Sophia_zly  阅读(135)  评论(0编辑  收藏  举报