PHP四种排序算法

时间:2017-05-15作者:klpeng分类:PHP浏览:1632评论:0
//冒泡排序  
function BubbleSort($arr) {
    $length = count($arr);
    if ($length <= 1) {
        return $arr;
    }
    for ($i = 0; $i < $length; $i++) {
        for ($j = $length - 1; $j > $i; $j--) {
            if ($arr[$j] < $arr[$j - 1]) {
                $tmp = $arr[$j];
                $arr[$j] = $arr[$j - 1];
                $arr[$j - 1] = $tmp;
            }
        }
    }
    return $arr;
}

//快速排序  
function QSort($arr) {
    $length = count($arr);
    if ($length <= 1) {
        return $arr;
    }
    $pivot = $arr[0]; //枢轴  
    $left_arr = array();
    $right_arr = array();
    for ($i = 1; $i < $length; $i++) {//注意$i从1开始0是枢轴  
        if ($arr[$i] <= $pivot) {
            $left_arr[] = $arr[$i];
        } else {
            $right_arr[] = $arr[$i];
        }
    }
    $left_arr = QSort($left_arr); //递归排序左半部分  
    $right_arr = QSort($right_arr); //递归排序右半部份  
    return array_merge($left_arr, array($pivot), $right_arr); //合并左半部分、枢轴、右半部分  
}

//选择排序  
function SelectSort($arr) {
    $length = count($arr);
    if ($length <= 1) {
        return $arr;
    }
    for ($i = 0; $i < $length; $i++) {
        $min = $i;
        for ($j = $i + 1; $j < $length; $j++) {
            if ($arr[$j] < $arr[$min]) {
                $min = $j;
            }
        }
        if ($i != $min) {
            $tmp = $arr[$i];
            $arr[$i] = $arr[$min];
            $arr[$min] = $tmp;
        }
    }
    return $arr;
}

//插入排序  
function InsertSort($arr) {
    $length = count($arr);
    if ($length <= 1) {
        return $arr;
    }
    for ($i = 1; $i < $length; $i++) {
        $x = $arr[$i];
        $j = $i - 1;
        while ($x < $arr[$j] && $j >= 0) {
            $arr[$j + 1] = $arr[$j];
            $j--;
        }
        $arr[$j + 1] = $x;
    }
    return $arr;
}


打赏
文章版权声明:除非注明,否则均为彭超的博客原创文章,转载或复制请以超链接形式并注明出处。
相关推荐

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

猜你喜欢