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 验证图片生成函数
May 21 PHP
Memcache 在PHP中的使用技巧
Feb 08 PHP
yii框架源码分析之创建controller代码
Jun 28 PHP
判断Keep-Alive模式的HTTP请求的结束的实现代码
Aug 06 PHP
PHP的博客ping服务代码
Feb 04 PHP
php数组键值用法实例分析
Feb 27 PHP
php获取网页里所有图片并存入数组的方法
Apr 06 PHP
php实现微信发红包
Dec 05 PHP
PHP编写简单的App接口
Aug 28 PHP
PHP实现微信商户支付企业付款到零钱功能
Sep 30 PHP
Yii2.0建立公共方法简单示例
Jan 29 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 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+.htaccess实现全站静态HTML文件GZIP压缩传输(一)
2007/02/15 PHP
基于Snoopy的PHP近似完美获取网站编码的代码
2011/10/23 PHP
PHP加密扩展库Mcrypt安装和实例
2013/11/10 PHP
PHP判断指定时间段的2个方法
2014/03/14 PHP
php导出csv格式数据并将数字转换成文本的思路以及代码分享
2014/06/05 PHP
php实现比较两个文件夹异同的方法
2015/06/18 PHP
jQuery+php简单实现全选删除的方法
2016/11/28 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
JavaScript 参考教程
2006/12/29 Javascript
javascript 一个函数对同一元素的多个事件响应
2009/07/25 Javascript
jQuery 加上最后自己的验证
2009/11/04 Javascript
jquery之empty()与remove()区别说明
2010/09/10 Javascript
JS将表单导出成EXCEL的实例代码
2013/11/11 Javascript
jQuery使用$.get()方法从服务器文件载入数据实例
2015/03/25 Javascript
JavaScript包装对象使用详解
2015/07/09 Javascript
JavaScript 冒泡排序和选择排序的实现代码
2016/09/03 Javascript
JavaScript SHA512加密算法详细代码
2016/10/06 Javascript
详解Vue.js基于$.ajax获取数据并与组件的data绑定
2017/05/26 Javascript
vue组件学习教程
2017/09/09 Javascript
利用pm2部署多个node.js项目的配置教程
2017/10/22 Javascript
iview实现select tree树形下拉框的示例代码
2018/12/21 Javascript
微信小程序实现张图片合成为一张并下载
2019/07/16 Javascript
jQuery中event.target和this的区别详解
2020/08/13 jQuery
Python中使用wxPython开发的一个简易笔记本程序实例
2015/02/08 Python
Python中的迭代器与生成器高级用法解析
2016/06/28 Python
Python实现一个服务器监听多个客户端请求
2018/04/12 Python
Python代码使用 Pyftpdlib实现FTP服务器功能
2019/07/22 Python
keras中epoch,batch,loss,val_loss用法说明
2020/07/02 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
2020/12/07 Python
教师党员思想汇报
2014/01/06 职场文书
捐赠仪式主持词
2014/03/19 职场文书
庆祝儿童节标语
2014/10/09 职场文书
事业单位年度考核评语
2014/12/31 职场文书
运动会广播稿200字
2015/08/19 职场文书
2019企业给员工的慰问信
2019/06/24 职场文书
Python一些基本的图像操作和处理总结
2021/06/23 Python