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下判断数组中是否存在相同的值array_unique
Mar 25 PHP
PHP无法访问远程mysql的问题分析及解决
May 16 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
Mar 14 PHP
PHP获取服务器端信息的方法
Nov 28 PHP
支持中文、字母、数字的PHP验证码
May 04 PHP
关于扩展 Laravel 默认 Session 中间件导致的 Session 写入失效问题分析
Jan 08 PHP
php mailer类调用远程SMTP服务器发送邮件实现方法
Mar 04 PHP
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
May 26 PHP
php进行ip地址掩码运算处理的方法
Jul 11 PHP
PHP实现权限管理功能示例
Sep 22 PHP
PHP基于关联数组20行代码搞定约瑟夫问题示例
Nov 07 PHP
PHP获取ttf格式文件字体名的方法示例
Mar 06 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
PHP Header用于页面跳转要注意的几个问题总结
2008/10/03 PHP
php实现水仙花数示例分享
2014/04/03 PHP
php实现两个数组相加的方法
2015/02/17 PHP
PHP二维关联数组的遍历方式(实例讲解)
2017/10/18 PHP
PHP命令Command模式用法实例分析
2018/08/08 PHP
不错的asp中显示新闻的功能
2006/10/13 Javascript
Js nodeType 属性全面解析
2013/11/14 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
2014/08/15 Javascript
基于jQuery实现的图片切换焦点图整理
2014/12/07 Javascript
JQuery复制DOM节点的方法
2015/06/11 Javascript
jquery实现具有嵌套功能的选项卡
2016/02/12 Javascript
详述JavaScript实现继承的几种方式(推荐)
2016/03/22 Javascript
JQ图片文件上传之前预览功能的简单实例(分享)
2017/11/12 Javascript
vue页面跳转后返回原页面初始位置方法
2018/02/11 Javascript
iView框架问题整理小结
2018/10/16 Javascript
JavaScript实现的九种排序算法
2019/03/04 Javascript
基于vue+axios+lrz.js微信端图片压缩上传方法
2019/06/25 Javascript
javascript 内存模型实例详解
2020/04/18 Javascript
[01:01:04]2018DOTA2亚洲邀请赛 4.5 淘汰赛 OpTic vs TNC 第一场
2018/04/06 DOTA
python持久性管理pickle模块详细介绍
2015/02/18 Python
简单介绍Python中的JSON使用
2015/04/28 Python
使用Python下载歌词并嵌入歌曲文件中的实现代码
2015/11/13 Python
Python3 中把txt数据文件读入到矩阵中的方法
2018/04/27 Python
Python实现处理逆波兰表达式示例
2018/07/30 Python
Python中的asyncio代码详解
2019/06/10 Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
2019/07/03 Python
pytorch 实现删除tensor中的指定行列
2020/01/13 Python
Python-jenkins模块之folder相关操作介绍
2020/05/12 Python
python request 模块详细介绍
2020/11/10 Python
英格兰橄榄球商店:England Rugby Store
2016/12/17 全球购物
亚洲独特体验旅游专家:eOasia
2018/08/15 全球购物
3D空间设计学生找工作的自我评价
2013/10/28 职场文书
房地产销售主管岗位职责
2015/02/13 职场文书
大学毕业生自我评价
2015/03/02 职场文书
房贷工资证明范本
2015/06/12 职场文书
写作之关于描写老人的好段摘抄
2019/11/14 职场文书