常见排序算法-php 1.归并排序 $a = [1, 4, 6, 8, 10, 14, 16]; $b = [2, 3, 5, 8, 9, 11]; function merge_sort($a,

本文提供了四种常见的排序算法的PHP实现:归并排序、选择排序、插入排序和冒泡排序,并附带具体代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常见排序算法-php

1.归并排序

$a = [1, 4, 6, 8, 10, 14, 16];
$b = [2, 3, 5, 8, 9, 11];
function merge_sort($a, $b)
{
    $a_i = $b_i = 0;
    $count_a = count($a);
    $count_b = count($b);
    $ret = [];
    while ($a_i < $count_a && $b_i < $count_b) {
        if ($a[$a_i] > $b[$b_i]) {
            array_push($ret, $b[$b_i]);
            $b_i++;
        } else {
            array_push($ret, $a[$a_i]);
            $a_i++;
        }
    }
    if ($a_i < $count_a) {
        $ret = array_merge($ret, array_slice($a, $a_i));
    }
    if ($b_i < $count_b) {
        $ret = array_merge($ret, array_slice($b, $b_i));
    }
    return $ret;
}

$ret = merge_sort($a, $b);
echo implode(',', $ret);

2.选择排序

$arr = [1, 5, 2, 7, 97, 23, 1, 4];
function select_sort(array $arr)
{
    $count = count($arr);
    if ($count < 2) return $arr;
    for ($i = 0; $i < $count; $i++) {
        $min = $arr[$i];
        $min_i = $i;
        for ($j = $i; $j < $count; $j++) {
            if ($arr[$j] < $min) {
                $min = $arr[$j];
                $min_i = $j;
            }
        }
        $arr[$min_i] = $arr[$i];
        $arr[$i] = $min;
    }
    return $arr;
}

$ret = select_sort($arr);
echo implode(',', $ret);

3.插入排序

$arr = [1, 5, 2, 7, 97, 23, 1, 4];
function insert_sort($arr)
{
    $count = count($arr);
    if ($count < 2) return $arr;
    for ($i = 0; $i < $count; $i++) {
        for ($j = $i; $j > 0; $j--) {
            if ($arr[$j] < $arr[$j - 1]) {
                $tmp = $arr[$j - 1];
                $arr[$j - 1] = $arr[$j];
                $arr[$j] = $tmp;
            }
        }
    }
    return $arr;
}

$ret = insert_sort($arr);
echo implode(',', $ret);

4.冒泡排序

$arr = [1, 5, 2, 7, 97, 23, 1, 4];
function maopao_sort($arr)
{
    $count = count($arr);
    if ($count < 2) return $arr;
    for ($i = 0; $i < $count; $i++) {
        for ($j = 0; $j < $count - $i - 1; $j++) { // 注意$j的上限,小心数组越界
            if ($arr[$j] > $arr[$j + 1]) {
                $tmp = $arr[$j + 1];
                $arr[$j + 1] = $arr[$j];
                $arr[$j] = $tmp;
            }
        }
    }
    return $arr;
}

$ret = maopao_sort($arr);
echo implode(',', $ret);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值