php三种基础算法:冒泡,插入和快速排序法

$array = array(2,3,5,6,9,8,1);

//冒泡排序思想,前后元素比较
function sort_bulldle($array){
    $num = count($array);
    for($i=0; $i<$num; $i++){
        $tmp = $array[$i];
        for ($j=$i-1; $j>=0; $j--) {
            if ($tmp < $array[$j]) {
                $arr[$j+1] = $arr[$j];
                $arr[$j] = $tmp;
            } else {
                break;
            }
        }
    }
    return $array;
}

//插入排序思想,就是从第二个元素开始,到最后一个元素都是这个需要排序的元素
function sort_bulldle($arr){
    for($i=1, $len=count($arr); $i<$len; $i++) {
        $tmp = $arr[$i];
        for($j=$i-1;$j>=0;$j--) {
            if($tmp < $arr[$j]) {
                $arr[$j+1] = $arr[$j];
                $arr[$j] = $tmp;
            } else {
                break;
            }
        }
    }
    return $arr;
}

//快速排序,找一个基准点把数组分成两组比较
function sort_bulldle($array){
        $num = count($array);
        if($num<=1) {
                return $array;
        }
        $base_num = $array[0];
        $left_array = array();
        $right_array = array();
        for($i=1; $i<$num; $i++) {
                if ($base_num > $array[$i]) {
                        $left_array[] = $array[$i];
                }else
                {
                        $right_array[] = $array[$i];
                }
        }
        $left_array = sort_bulldle($left_array);
        $right_array = sort_bulldle($right_array);
        return array_merge($left_array, array($base_num), $right_array);
}

 

posted @ 2016-03-25 17:55  北京流浪儿  阅读(253)  评论(0编辑  收藏  举报