欢迎访问宙启技术站
智能推送

php插入排序如何使用

发布时间:2023-05-15 19:30:00

插入排序是一种简单直观的排序算法,经常用来对小规模数据进行排序。它的基本思想是将未排序的数据逐个插入已经排序好的数据中。在这个过程中,我们需要将待排序的数据与已排序的数据逐个比较,然后找到它应该插入的位置,最后将它插入到正确的位置上。

在 PHP 中,可以使用以下代码实现插入排序:

function insertion_sort($arr) {
    $count = count($arr);
    for ($i = 1; $i < $count; $i++) {
        $tmp = $arr[$i];
        $j = $i - 1;
        while ($j >= 0 && $arr[$j] > $tmp) {
            $arr[$j + 1] = $arr[$j];
            $j--;
        }
        $arr[$j + 1] = $tmp;
    }
    return $arr;
}

以上代码实现了一个通用的插入排序算法,它接受一个数组 $arr $ 作为参数,返回一个排序好的数组。在这个算法中,我们首先获取数组的长度 $count$,然后使用一个 $for$ 循环遍历数组。在每次循环中,我们取出数组中的一个元素 $tmp$ ,并将它插入到前面排序好的部分数组中去。为了找到它应该插入的位置,我们使用一个 $while$ 循环,不断将前面较大的元素向右移动,直到 $tmp$ 找到了自己的位置。最后返回排序好的数组。

下面是一个使用插入排序的例子,我们给出一个包含 $10,000$ 个随机整数的数组,并对它进行排序:

$arr = [];
for ($i = 0; $i < 10000; $i++) {
    $arr[] = rand(1, 10000);
}

$start_time = microtime(true);
$arr = insertion_sort($arr);
$end_time = microtime(true);

echo '排序用时:' . round($end_time - $start_time, 4) . '秒';

以上代码中,我们先使用一个 $for$ 循环生成 $10,000$ 个随机整数,并将它们存储在一个数组 $arr$ 中。然后使用 PHP 提供的 $microtime$ 函数记录程序开始运行的时间,并调用我们刚才实现的插入排序算法将 $arr$ 数组排序。最后再次使用 $microtime$ 函数记录程序结束运行的时间,并计算出程序运行的用时。

插入排序虽然简单,但它的复杂度较高。当数据规模比较小的时候,使用插入排序是合适的,但当数据规模增大时,插入排序的时间复杂度会快速增加,变得不再适用。此时可以使用其他更高效的排序算法,如快速排序、归并排序等。