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 相关文章推荐
通过文字传递创建的图形按钮
Oct 09 PHP
php实现批量下载百度云盘文件例子分享
Apr 10 PHP
PHP实现数组递归转义的方法
Aug 28 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
Sep 24 PHP
Thinkphp多文件上传实现方法
Oct 31 PHP
php读取文件内容到数组的方法
Mar 16 PHP
微信公众平台实现获取用户OpenID的方法
Apr 15 PHP
php使用GD2绘制几何图形示例
Feb 15 PHP
完美的php分页类
Oct 24 PHP
php删除一个路径下的所有文件夹和文件的方法
Feb 07 PHP
PHP Laravel中的Trait使用方法
Jan 20 PHP
PHP Web表单生成器案例分析
Jun 02 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
用header 发送cookie的php代码
2007/03/16 PHP
基于php下载文件的详解
2013/06/02 PHP
redis+php实现微博(二)发布与关注功能详解
2019/09/23 PHP
基于jquery的分页控件(C#)
2011/01/06 Javascript
JavaScript中“基本类型”之争小结
2013/01/03 Javascript
javaScript让文本框内的最后一个文字的后面获得焦点实现代码
2013/01/06 Javascript
javascript 按键事件(兼容各浏览器)
2013/12/20 Javascript
Jquery解析json数据详解
2013/12/26 Javascript
使用Jquery获取带特殊符号的ID 标签的方法
2014/04/30 Javascript
javascript html实现网页版日历代码
2016/03/08 Javascript
js中 计算两个日期间的工作日的简单实例
2016/08/08 Javascript
Bootstrap Table使用心得总结
2016/11/29 Javascript
详解JS模块导入导出
2017/12/20 Javascript
详解Vue单元测试Karma+Mocha学习笔记
2018/01/31 Javascript
如何将你的AngularJS1.x应用迁移至React的方法
2018/02/01 Javascript
jQuery niceScroll滚动条错位问题的解决方法
2018/02/03 jQuery
解决jquery有正确返回值但不执行success函数的问题
2018/08/20 jQuery
node Buffer缓存区常见操作示例
2019/05/04 Javascript
详解在Python和IPython中使用Docker
2015/04/28 Python
Python中的zipfile模块使用详解
2015/06/25 Python
解决Python print 输出文本显示 gbk 编码错误问题
2018/07/13 Python
Python map及filter函数使用方法解析
2020/08/06 Python
python中openpyxl和xlsxwriter对Excel的操作方法
2021/03/01 Python
布局和排版教程 纯css3实现图片三角形排列
2014/10/17 HTML / CSS
CSS3弹性盒模型开发笔记(二)
2016/04/26 HTML / CSS
生产经理的自我评价分享
2013/11/07 职场文书
广告设计专业自荐信范文
2013/11/14 职场文书
企划经理的岗位职责
2013/11/17 职场文书
教师个人鉴定材料
2014/02/08 职场文书
技校学生个人职业生涯规划范文
2014/03/03 职场文书
2014年物业管理工作总结
2014/11/21 职场文书
专职安全员岗位职责
2015/04/11 职场文书
浅谈移动端中的视口(viewport)的具体使用
2021/04/13 HTML / CSS
Java新手教程之ArrayList的基本使用
2021/06/20 Java/Android
Java面试题冲刺第十七天--基础篇3
2021/08/07 面试题
MySQL 数据库范式化设计理论
2022/04/22 MySQL