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入门学习知识点六 PHP文件的读写操作代码
Jul 14 PHP
基于PHP magic_quotes_gpc的使用方法详解
Jun 24 PHP
PHP迭代器的内部执行过程详解
Nov 12 PHP
php中把美国时间转为北京时间的自定义函数分享
Jul 28 PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
Nov 18 PHP
如何把php5.3版本升级到php5.4或者php5.5
Jul 31 PHP
PHP实现JS中escape与unescape的方法
Jul 11 PHP
phpcms的分类名称和类别名称的调用
Jan 05 PHP
PHP编程计算文件或数组中单词出现频率的方法
May 22 PHP
PHP不使用内置函数实现字符串转整型的方法示例
Jul 03 PHP
原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】
Mar 07 PHP
Laravel框架实现抢红包功能示例
Oct 31 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中convert_uuencode()与convert_uuencode函数用法实例
2014/11/22 PHP
PHP连接操作access数据库实例
2015/03/30 PHP
Discuz!X中SESSION机制实例详解
2015/09/23 PHP
php微信公众号开发之答题连闯三关
2018/10/20 PHP
清除网页历史记录,屏蔽后退按钮!
2008/12/22 Javascript
Iframe自适应高度绝对好使的代码 兼容IE,遨游,火狐
2011/01/27 Javascript
firefox下jquery iframe刷新页面提示会导致重复之前动作
2012/12/17 Javascript
javascript不同类型数据之间的运算的转换方法
2014/02/13 Javascript
使用纯javascript实现经典扫雷游戏
2015/04/23 Javascript
折叠菜单及选择器的运用
2017/02/03 Javascript
Vue.js之slot深度复制详解
2017/03/10 Javascript
vue 插值 v-once,v-text, v-html详解
2018/01/19 Javascript
vue-infinite-loading2.0 中文文档详解
2018/04/08 Javascript
Element-UI Table组件上添加列拖拽效果实现方法
2018/04/14 Javascript
Layui 解决表格异步调用后台分页的问题
2019/10/26 Javascript
[04:52]2015国际邀请赛LGD战队晋级之路
2015/08/14 DOTA
利用pyinstaller或virtualenv将python程序打包详解
2017/03/22 Python
浅谈pytorch和Numpy的区别以及相互转换方法
2018/07/26 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
2019/11/08 Python
Python实现队列的方法示例小结【数组,链表】
2020/02/22 Python
解决windows下python3使用multiprocessing.Pool出现的问题
2020/04/08 Python
浅谈three.js中的needsUpdate的应用
2012/11/12 HTML / CSS
Final类有什么特点
2012/04/25 面试题
幼儿教师自我鉴定
2013/11/02 职场文书
教育专业自荐书范文
2013/12/17 职场文书
中学生运动会入场词
2014/02/12 职场文书
法院干警四风问题自我剖析材料
2014/09/29 职场文书
批评与自我批评总结
2014/10/17 职场文书
学校机关党总支领导班子整改工作方案
2014/10/26 职场文书
幼儿园2014年度工作总结
2014/11/10 职场文书
大学毕业论文致谢词
2015/05/14 职场文书
加班费申请报告
2015/05/15 职场文书
医院党建工作总结2015
2015/05/26 职场文书
于丹讲座视频观后感
2015/06/15 职场文书
早上好问候语大全
2015/11/10 职场文书
TV动画「神渣☆爱豆」公开第一弹主视觉图
2022/03/21 日漫