网络语言系列&php系列【仅供参考】:PHP实现插入排序




PHP实现插入排序

插入排序(Insertion Sort)是一种简单直观的排序算法,适用于少量数据的排序。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入

以下是一个用PHP实现插入排序的示例代码:

<?php
function insertionSort(&$array) {
    $length = count($array);
    for ($i = 1; $i < $length; $i++) {
        $key = $array[$i];
        $j = $i - 1;
 
        // 将array[0..i-1]中大于key的元素向后移动一位
        while ($j >= 0 && $array[$j] > $key) {
            $array[$j + 1] = $array[$j];
            $j = $j - 1;
        }
        $array[$j + 1] = $key;
    }
}
 
// 测试插入排序
$array = [12, 11, 13, 5, 6];
echo "未排序数组: \n";
print_r($array);
 
insertionSort($array);
 
echo "已排序数组: \n";
print_r($array);
?>

代码解释:

1. 函数定义:

  1. function insertionSort(&$array):定义一个名为insertionSort的函数,参数$array通过引用传递,这样可以直接修改原数组。

2. 获取数组长度:

  1. $length = count($array):获取数组的长度。

3. 外层循环:

  1. for ($i = 1; $i < $length; $i++):从数组的第二个元素开始遍历,因为第一个元素默认是已排序的。

4. 保存当前元素:

  1. $key = $array[$i]:将当前元素保存到变量$key中。
    `
  2. $j = $i - 1:初始化索引$j为当前元素的前一个索引。

5. 内层循环:

  1. while ($j >= 0 && $array[$j] > $key):在内层循环中,如果$j索引的元素大于$key,则将$j索引的元素向后移动一位。

  2. $array[$j + 1] = $array[$j]:将$j索引的元素赋值给$j+1索引的位置。

  3. $j = $j - 1:递减$j索引

6. 插入当前元素:

  1. $array[$j + 1] = $key:找到适当的位置后,将$key插入到该位置。

7. 测试:

  1. 定义一个数组$array并输出未排序的数组。

  2. 调用insertionSort($array)函数进行排序。

  3. 输出已排序的数组。

运行结果:

未排序数组: 
Array
(
    [0] => 12
    [1] => 11
    [2] => 13
    [3] => 5
    [4] => 6
)
已排序数组: 
Array
(
    [0] => 5
    [1] => 6
    [2] => 11
    [3] => 12
    [4] => 13
)

这样,通过插入排序算法,数组就被成功排序了。插入排序的时间复杂度为O(n^2),在数据量较小或基本有序的情况下表现较好。







ac-er8888

PHP实现插入排序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坦笑&&life

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值