资讯专栏INFORMATION COLUMN

PHP插入排序

masturbator / 3165人阅读

摘要:冒泡排序对数组按从小到大进行排序得到结果比较,逻辑大致是这样的。默认第一个元素是最小值,所以从第二个元素开始一次与前面的元素进行比较,插入到合适的位置时将与进行比较。发现比大,跳出本次循环,此时数组依然为

冒泡排序

对数组$arr = [9,7,2,77,31]按从小到大进行排序

$arr = [9,7,2,77,31];
$length = count($arr);
for($i=1;$i<$length;$i++)
{
    $tmp = $arr[$i];
    for ($j=$i-1;$j>=0;$j--)
    {
        if($tmp<$arr[$j])
        {
            $arr[$j+1] = $arr[$j];
            $arr[$j] = $tmp;
        }
        else
        {
            break;
        }
    }
   
}
print_r($arr);
得到结果
Array
(
    [0] => 2
    [1] => 7
    [2] => 9
    [3] => 31
    [4] => 77
)

比较,逻辑大致是这样的。默认第一个元素是最小值,所以从第二个元素开始一次与前面的元素进行比较,插入到合适的位置

i=1

j=0 时;将79进行比较。发现79小,交换位置,此时得到数组[7,9,2,77,31]

i=2

j=1时;将29进行比较。发现29小,交换位置,此时得到数组[7,2,9,77,31]

j=0时;将27进行比较。发现27小,交换位置,此时得到数组[2,7,9,77,31]

i=3

j=2时;将779进行比较。发现779大,跳出本次循环,此时数组依然为[2,7,9,77,31]

i=4

j=3时;将3177进行比较。发现3177小,交换位置,此时得到数组[2,7,9,31,77]

j=2时;将931进行比较。发现319大,跳出本次循环,此时数组依然为[2,7,9,31,77]

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29409.html

相关文章

  • PHP排序算法之插入排序

    摘要:直接插入排序是由两层嵌套循环组成的。插入排序的基本方法是每步将一个待排序的记录按其关键字的大小插到前面已经排序的序列中的适当位置,直到全部记录插入完毕为止。算法实现直接插入排序记录后移插入到正确的位置运行结果 算法引入: 在这里我们依然使用《大话数据结构》里面的一个例子: 扑克牌是我们几乎每个人都玩过的游戏。平时我们开始的时候一般都是一个人发牌,其他人都是一边摸牌,一边理牌,假如你摸上...

    rose 评论0 收藏0
  • PHP 实现插入排序

    摘要:插入排序插入排序英语是一种简单直观的排序算法。插入排序在实现上,通常采用排序即只需用到的额外空间的排序,因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。一般来说,插入排序都采用在数组上实现。 导语 关于排序的算法,就此告一段落。冒泡排序、快速排序、选择排序、加上本篇的插入排序,这四种算法都是相对简单,容易理解的。更复杂的算法,就不献丑了,以免误人子弟...

    DoINsiSt 评论0 收藏0
  • php插入排序,快速排序,归并排序,堆排序

    摘要:的陣列視為基本型別,所以必須用傳參考才能修改原陣列插入排序快速排序归并排序堆排序获取个数处理一半的数据 function bubble_sort(&$arr) {//php的陣列視為基本型別,所以必須用傳參考才能修改原陣列 for ($i = 0; $i < count($arr) - 1; $i++) for ($j = 0; $j < count($arr)...

    JerryZou 评论0 收藏0
  • 比较排序算法(PHP

    摘要:总结比较排序算法都是空间复杂度为的原地排序算法,其中冒泡排序和插入排序两两比较不会交换相等的记录,所以这两种排序都是稳定排序,而选择排序只是记录最小值最后进行交换,所以会破坏相对顺序,选择排序不是稳定算法。 冒泡排序 两两比较相邻记录的关键字,如果反序则交换,大的数字往下沉,一直到最大的出现在数组最后 function swap(&$x, &$y) { $temp = $x; ...

    浠ラ箍 评论0 收藏0
  • PHP算法之四大基础算法

    摘要:而在证明算法是正确的基础上,第二步就是分析算法的时间复杂度。算法的时间复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能很好反映出算法的优劣与否。 showImg(https://segmentfault.com/img/remote/1460000016451712?w=800&h=341); 前言 虽然工作中,你觉得自己并没有涉及到算法这方面的东西,但是算法是程序的...

    isLishude 评论0 收藏0
  • PHP面试:说下什么是堆和堆排序

    摘要:一个常见的例子就是优先队列,还有排序算法之一的堆排序。另外我们还将学习堆排序,并将使用实现堆。堆排序在堆排序中,我们需要用给定的值构建一个一个堆。伪代码如下从上面的伪代码可以看到,堆排序的第一步就是构建一个堆。 堆是什么? 堆是基于树抽象数据类型的一种特殊的数据结构,用于许多算法和数据结构中。一个常见的例子就是优先队列,还有排序算法之一的堆排序。这篇文章我们将讨论堆的属性、不同类型的堆...

    twohappy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<