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 动态添加记录
Mar 10 PHP
关于IIS php调用com组件的权限问题
Jan 11 PHP
PHP使用数组实现队列
Feb 05 PHP
Thinkphp模板中截取字符串函数简介
Jun 17 PHP
初识laravel5
Mar 02 PHP
typecho插件编写教程(三):保存配置
May 28 PHP
PHP生成plist数据的方法
Jun 16 PHP
php计算税后工资的方法
Jul 28 PHP
配置Nginx+PHP的正确思路与过程
May 10 PHP
修改Laravel5.3中的路由文件与路径
Aug 10 PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
Jun 21 PHP
Laravel关系模型指定条件查询方法
Oct 10 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做下载文件的实现代码及文件名中乱码解决方法
2011/02/03 PHP
PHPThumb图片处理实例
2014/05/03 PHP
PHP中SimpleXML函数用法分析
2014/11/26 PHP
学习PHP session的传递方式
2016/06/15 PHP
JavaScript下利用fso判断文件是否存在的代码
2010/12/11 Javascript
javascript 45种缓动效果 非常酷
2011/06/28 Javascript
js window.print实现打印特定控件或内容
2013/09/16 Javascript
JavaScript Ajax Json实现上下级下拉框联动效果实例代码
2013/11/23 Javascript
javascript获取元素CSS样式代码示例
2013/11/28 Javascript
javascript面向对象特性代码实例
2014/06/12 Javascript
JavaScript前端图片加载管理器imagepool使用详解
2014/12/29 Javascript
简介JavaScript中的italics()方法的使用
2015/06/08 Javascript
14 个折磨人的 JavaScript 面试题
2016/08/08 Javascript
vue中接口域名配置为全局变量的实现方法
2018/09/20 Javascript
微信小程序使用for循环动态渲染页面操作示例
2018/12/25 Javascript
Jquery滑动门/tab切换实现方法完整示例
2020/06/05 jQuery
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
2020/07/20 Javascript
Python中使用tarfile压缩、解压tar归档文件示例
2015/04/05 Python
Python简单读取json文件功能示例
2017/11/30 Python
Python处理CSV与List的转换方法
2018/04/19 Python
对python .txt文件读取及数据处理方法总结
2018/04/23 Python
Python基础教程之if判断,while循环,循环嵌套
2019/04/25 Python
Python进度条的制作代码实例
2019/08/31 Python
Python笔记之工厂模式
2019/11/20 Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
2020/03/08 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
2020/06/09 Python
python中strip(),lstrip(),rstrip()函数的使用讲解
2020/11/17 Python
详解CSS3的perspective属性设置3D变换距离的方法
2016/05/23 HTML / CSS
h5页面背景图很长要有滚动条滑动效果的实现
2021/01/27 HTML / CSS
波兰电子产品购物网站:Vobis
2019/05/26 全球购物
SmartBuyGlasses比利时:购买品牌太阳镜和眼镜
2019/08/09 全球购物
工作会议主持词
2014/03/17 职场文书
财产公证书格式
2014/04/10 职场文书
《三顾茅庐》教学反思
2014/04/10 职场文书
学校政风行风评议工作总结
2014/10/21 职场文书
研究生个人学年总结
2015/02/14 职场文书