PHP插入排序实现代码

 更新时间:2013年04月04日 22:49:30   作者:  
插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据。

算法描述:

⒈ 从第一个元素开始,该元素可以认为已经被排序
⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描
⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置
⒋ 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
⒌ 将新元素插入到下一位置中
⒍ 重复步骤2

复制代码 代码如下:

<?php

    $arr =array(123,0,5,-1,4,15);

    function insertSort(&$arr){

        //先默认第一个下标为0的数是排好的数
        for($i=1;$i<count($arr);$i++){
            //确定插入比较的数
            $insertVal=$arr[$i];
            //确定与前面比较的数比较
            $insertIndex=$i-1;

            //表示没有找到位置
            while($insertIndex>=0 && $insertVal<$arr[$insertIndex]){

                //把数后移
                $arr[$insertIndex+1]=$arr[$insertIndex];
                $insertIndex--;
            }

        //插入(给$insertval找到位置了)
        $arr[$insertIndex+1] = $insertVal;
        }
    }

    insertSort($arr);
    print_r($arr);
?>

相关文章

  • 使用composer 安装 laravel框架的方法图文详解

    使用composer 安装 laravel框架的方法图文详解

    这篇文章主要介绍了使用composer 安装 laravel框架的方法,结合图文说明的形式详细分析了composer 安装 laravel框架的具体步骤、相关命令与操作注意事项,需要的朋友可以参考下
    2019-08-08
  • PHP+javascript制作带提示的验证码源码分享

    PHP+javascript制作带提示的验证码源码分享

    经常看的别人网站上输完验证码,可以直接判断正确与否,感觉体验非常不错,赶紧给自己网站也加上,源码分享给大家
    2014-05-05
  • THINKPHP项目开发中的日志记录实例分析

    THINKPHP项目开发中的日志记录实例分析

    这篇文章主要介绍了THINKPHP项目开发中的日志记录用法,以实例形式较为全面的分析了日志表的建立与相关数据库操作方法,具有一定的实用价值,需要的朋友可以参考下
    2014-12-12
  • thinkPHP实现的省市区三级联动功能示例

    thinkPHP实现的省市区三级联动功能示例

    这篇文章主要介绍了thinkPHP实现的省市区三级联动功能,详细分析了thinkPHP实现省市区三级联动功能的详细步骤与相关操作技巧,需要的朋友可以参考下
    2017-05-05
  • PHP培训要多少钱

    PHP培训要多少钱

    好多同学会加入到互联网行业,最好的入门可能就是学习PHP、web前端等。那今天我就回答一下大家php培训多少钱
    2017-06-06
  • laravel-admin利用ModelTree实现对分类信息的管理

    laravel-admin利用ModelTree实现对分类信息的管理

    这篇文章主要介绍了laravel-admin利用ModelTree实现对分类信息的管理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 在 Laravel 中 “规范” 的开发短信验证码发送功能

    在 Laravel 中 “规范” 的开发短信验证码发送功能

    Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。接下来通过本文给大家分享在 Laravel 中 “规范” 的开发短信验证码发送功能,需要的朋友参考下吧
    2017-10-10
  • ThinkPHP中url隐藏入口文件后接收alipay传值的方法

    ThinkPHP中url隐藏入口文件后接收alipay传值的方法

    这篇文章主要介绍了ThinkPHP中url隐藏入口文件后接收alipay传值的方法,可实现针对第三方接口的URL地址中的?进行转换处理,是非常实用的技巧,需要的朋友可以参考下
    2014-12-12
  • thinkphp中session和cookie无效的解决方法

    thinkphp中session和cookie无效的解决方法

    这篇文章主要介绍了thinkphp中session和cookie无效的解决方法,涉及针对BOM头的分析与删除方法,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-12-12
  • CodeIgniter连贯操作的底层原理分析

    CodeIgniter连贯操作的底层原理分析

    这篇文章主要介绍了CodeIgniter连贯操作的底层原理,结合实例形式分析了CodeIgniter中常见的php oop连贯操作实现原理,具有很大的通用性,代码简单易懂,需要的朋友可以参考下
    2016-05-05

最新评论