[排序] -- 插入排序

本文介绍了一种经典的排序算法——插入排序,并提供了使用PHP语言实现升序和降序排序的完整代码示例。通过该示例代码,读者可以了解插入排序的基本逻辑及其实现过程。

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

插入排序的逻辑:

假设Array A为已经排序好的数组,此时需要从Array B中抽取最靠前的元素插入到Array A中,且需要按顺序插入。

变形:

如果只有Array A,而不存在Array B。现在对Array A自己进行插入排序。可以默认认为Array A中的前半段为已排序好的数组,后半段为未排序数组,而元素K为目前正要进行排序的元素。此时前半段可以表示为A[0-(k-1)],后半段为A[(k+1)-(n-1)]n为数组长度

<?php
$a = array(5,2,4,6,1,3);
$b = array(31,41,59,26,41,48);

function insertionSortAsc($a = array())
{
    $length = count($a);

    for ($j = 1; $j < $length; $j++) {
        $current = $a[$j];
        $i = $j - 1;//从原有序deck中最后一位开始比较,从右向左

        while ($i >= 0 && $a[$i] > $current) {
            $a[$i + 1] = $a[$i];//将数字向左移动一位
            $i--;
        }

        $a[$i + 1] = $current;
    }

    return $a;
}

function insertionSortDesc($a = array())
{
    $length = count($a);

    for ($j = 1; $j < $length; $j++) {
        $current = $a[$j];
        $i = $j - 1;

        while($i >= 0 && $a[$i] < $current) {
            $a[$i + 1] = $a[$i];//将数字向左移动一位
            $i--;
        }

        $a[$i + 1] = $current;
    }

    return $a;
}

print_r(insertionSortAsc($a));

print_r(insertionSortDesc($b));

输出结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值