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 __autoload()方法真的影响性能吗?
Mar 30 PHP
基于PHP中的常用函数回顾
Jul 11 PHP
php 创建以UNIX时间戳命名的文件夹(示例代码)
Mar 08 PHP
php实现按文件名搜索文件的远程文件查找器
May 10 PHP
php使用wordwrap格式化文本段落的方法
Mar 17 PHP
PHP实现QQ空间自动回复说说的方法
Dec 02 PHP
微信支付扫码支付php版
Jul 22 PHP
PHP图片添加水印功能示例小结
Oct 03 PHP
CodeIgniter框架基本增删改查操作示例
Mar 23 PHP
PHP配置ZendOpcache插件加速
Feb 14 PHP
PHP中的Iterator迭代对象属性详解
Apr 12 PHP
Centos7安装swoole扩展操作示例
Mar 26 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
复杂检索数据并分页显示的处理方法
2006/10/09 PHP
一步一步学习PHP(3) php 函数
2010/02/15 PHP
解决php-fpm.service not found问题的办法
2017/06/06 PHP
关于js中window.location.href,location.href,parent.location.href,top.location.href的用法与区别
2010/10/18 Javascript
javascript中xml操作实现代码
2011/11/21 Javascript
JavaScript异步编程Promise模式的6个特性
2014/04/03 Javascript
JQuery中属性过滤选择器用法实例分析
2015/05/18 Javascript
AngularJS 遇到的小坑与技巧小结
2016/06/07 Javascript
BootStrap网页中代码显示用法详解
2016/10/21 Javascript
老生常谈jquery id选择器和class选择器的区别
2017/02/12 Javascript
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
2017/12/06 Javascript
webpack写jquery插件的环境配置
2017/12/21 jQuery
vue中动态绑定表单元素的属性方法
2018/02/23 Javascript
vue2.5.2使用http请求获取静态json数据的实例代码
2018/02/27 Javascript
JS实现横向跑马灯效果代码
2020/04/20 Javascript
vue引入静态js文件的方法
2020/06/20 Javascript
vue组件讲解(is属性的用法)模板标签替换操作
2020/09/04 Javascript
js实现头像上传并且可预览提交
2020/12/25 Javascript
Python 分析Nginx访问日志并保存到MySQL数据库实例
2014/03/13 Python
Python复数属性和方法运算操作示例
2017/07/21 Python
对Python中gensim库word2vec的使用详解
2018/05/08 Python
OpenCV图像颜色反转算法详解
2019/05/13 Python
Djang的model创建的字段和参数详解
2019/07/27 Python
python实现将视频按帧读取到自定义目录
2019/12/10 Python
python3下pygame如何实现显示中文
2020/01/11 Python
Amara美国站:英国高端家居礼品网站,世界各地的奢侈家具品牌
2017/07/26 全球购物
英国川宁茶官方网站:Twinings茶
2019/05/21 全球购物
银行会计职员个人的自我评价
2013/09/29 职场文书
2014年应届大学生自我评价
2014/01/09 职场文书
商超业务员岗位职责
2014/03/12 职场文书
2016领导干部廉洁自律心得体会
2016/01/13 职场文书
生鲜超市—未来中国最具有潜力零售业态
2019/08/02 职场文书
2019事业单位个人工作总结范文
2019/08/26 职场文书
喜迎建国70周年:有关爱国的名言名句
2019/09/24 职场文书
css display table 自适应高度、宽度问题的解决
2021/05/07 HTML / CSS
Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
2022/03/16 Redis