php插入排序法实现数组排序实例


Posted in PHP onFebruary 16, 2015

本文实例讲述了php插入排序法实现数组排序的方法。分享给大家供大家参考。具体分析如下:

插入排序法的基本思路:同样以案例来说明,还是以$arr = array(2,6,3,9),由大到小排序。

实现原理:假设(并不实际创建)有一个有序数组$arr = array(2),用$arr[1]=6来与它进行比较,如果6>2,由把$arr[0]后移到$arr[1]位置,而6插入到$arr[0]位置。接着,$arr[2]=3与$arr[1]=2比较,3>2,则$arr[1]=2继续后移到$arr[2]位置,原$arr[3]=3插入到$arr[1]位置,再继续把9插入到合位置,最终得到的结果是(9,6,3,2)。同样是经过 count($arr)-1 次大循环,即可实现排序。

代码规律分析:

第一次大循环:$[1]与$[0]比;
第二次大循环:$[2]与$[1]比,$[1]与$[0]比;
第三次大循环:$[3]与$[2]比,$[2]与$[1]比,$[1]与$[0]比;

PHP代码,使用了函数封装,以便于使用

<?php
function insertSort(&$arr){
 for($i=1;$i<count($arr);$i++){
 //$insertVal是准备插入的数
 for($j=$i;$j>0;$j--){
  if($arr[$j]>$arr[$j-1]){
  $insertVal = $arr[$j];
  $arr[$j] = $arr[$j-1];
  $arr[$j-1] = $insertVal;
  }
 }
 }
}
$myarr = array(2,6,3,9);
insertSort($myarr);
echo "<pre>";
print_r($myarr);
?>

代码实现分析:

第一次大循环:

$i=1 数组(2,6,3,9)
$j=1 执行6和2比:$arr[1]=2;$arr[0]=6,得到(6,2,3,9)

第二次大循环:

$i=2 数组(6,2,3,9)
$j=2 执行3和2比:变成$arr[2]=2,$arr[1]=3,得到(6,3,2,9)
$j--,$j=1 执行$arr[1]和$arr[0]比:条件不成立

第三次大循环:

$i=3 数组(6,3,2,9)
$j=3 执行9和2比:变成$arr[3]=2,$arr[2]=9,得到(6,3,9,2)
$j--,$j=2 执行9和3比:变成$arr[2]=3,$arr[1]=9,得到(6,9,3,2)
$j--,$j=1 执行9和6比:变成$arr[1]=5,$arr[0]=9,得到(9,6,3,2)

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
php 数组二分法查找函数代码
Feb 16 PHP
用Zend Encode编写开发PHP程序
Feb 21 PHP
注册页面之前先验证用户名是否存在的php代码
Jul 14 PHP
解析PHP实现多进程并行执行脚本
Jun 18 PHP
PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
May 10 PHP
CI框架中zip类应用示例
Jun 17 PHP
PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法
Jul 08 PHP
php中随机函数mt_rand()与rand()性能对比分析
Dec 01 PHP
推荐一本PHP程序猿都应该拜读的书
Dec 31 PHP
PHP实现大数(浮点数)取余的方法
Feb 18 PHP
yii2.0整合阿里云oss删除单个文件的方法
Sep 19 PHP
Ajax+PHP实现的分类列表框功能示例
Feb 11 PHP
php实现递归与无限分类的方法
Feb 16 #PHP
php实现多维数组中每个单元值(数字)翻倍的方法
Feb 16 #PHP
php数组添加与删除单元的常用函数实例分析
Feb 16 #PHP
PHP两种快速排序算法实例
Feb 15 #PHP
PHP批量查询WordPress留言者E-mail地址实现方法
Feb 15 #PHP
CentOS下PHP安装Oracle扩展
Feb 15 #PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
Feb 14 #PHP
You might like
浅谈Windows下 PHP4.0与oracle 8的连接设置
2006/10/09 PHP
PHP中array_map与array_column之间的关系分析
2014/08/19 PHP
php实现图片等比例缩放代码
2015/07/23 PHP
PHP调试的强悍利器之PHPDBG
2016/02/22 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
2017/01/13 PHP
详谈PHP面向对象中常用的关键字和魔术方法
2017/02/04 PHP
php成功操作redis cluster集群的实例教程
2019/01/13 PHP
解决jquery .ajax 在IE下卡死问题的解决方法
2009/10/26 Javascript
jquery实现居中弹出层代码
2010/08/25 Javascript
基于jQuery替换table中的内容并显示进度条的代码
2011/08/02 Javascript
jquery果冻抖动效果实现方法
2015/01/15 Javascript
jquery通过closest选择器修改上级元素的方法
2015/03/17 Javascript
JS实现三级折叠菜单特效,其它级可自动收缩
2015/08/06 Javascript
基于Bootstrap使用jQuery实现输入框组input-group的添加与删除
2016/05/03 Javascript
jQuery实现导航栏头部菜单项点击后变换颜色的方法
2017/07/19 jQuery
微信小程序“摇一摇”的实例代码
2017/07/20 Javascript
vue基于Element构建自定义树的示例代码
2017/09/19 Javascript
Angular2仿照微信UI实现9张图片上传和预览的示例代码
2017/10/19 Javascript
JavaScript实现百度搜索框效果
2020/03/26 Javascript
如何解决React官方脚手架不支持Less的问题(小结)
2018/09/12 Javascript
微信小程序渲染性能调优小结
2019/07/30 Javascript
详解vue+axios给开发环境和生产环境配置不同的接口地址
2019/08/16 Javascript
Python+OpenCV让电脑帮你玩微信跳一跳
2018/01/04 Python
每天迁移MySQL历史数据到历史库Python脚本
2018/04/13 Python
python实现剪切功能
2019/01/23 Python
django中ORM模型常用的字段的使用方法
2019/03/05 Python
简单了解Django应用app及分布式路由
2019/07/24 Python
使用Rasterio读取栅格数据的实例讲解
2019/11/26 Python
TensorFlow使用Graph的基本操作的实现
2020/04/22 Python
美国知名玩具品牌:Melissa & Doug
2016/08/16 全球购物
香港草莓网土耳其网站:Strawberrynet TR
2017/03/02 全球购物
5.1手机促销活动
2014/01/17 职场文书
新闻编辑专业毕业自荐书范文
2014/02/05 职场文书
竞选文艺委员演讲稿
2014/04/28 职场文书
安全教育月活动总结
2014/05/05 职场文书
2014年党员干部四风问题自我剖析材料
2014/09/29 职场文书