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
PHPMYADMIN 简明安装教程 推荐
Mar 07 PHP
PHP学习笔记之二
Jan 17 PHP
php中的注释、变量、数组、常量、函数应用介绍
Nov 16 PHP
详解WordPress中给链接添加查询字符串的方法
Dec 18 PHP
WordPress中给媒体文件添加分类和标签的PHP功能实现
Dec 31 PHP
Yii核心验证器api详解
Nov 23 PHP
php编程实现简单的网页版计算器功能示例
Apr 26 PHP
PHP 实现页面静态化的几种方法
Jul 23 PHP
PHP 访问数据库配置通用方法(json)
May 20 PHP
PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例
Jun 17 PHP
Laravel实现ORM带条件搜索分页
Oct 24 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 执行系统命令的方法
2009/07/07 PHP
基于PHP对XML的操作详解
2013/06/07 PHP
php中mysql连接方式PDO使用详解
2015/02/25 PHP
[原创]php正则删除html代码中class样式属性的方法
2017/05/24 PHP
自定义的一个简单时尚js下拉选择框
2013/11/20 Javascript
javascript中match函数的用法小结
2014/02/08 Javascript
为什么Node.js会这么火呢?Node.js流行的原因
2014/12/01 Javascript
jQuery插件Tmpl的简单使用方法
2015/04/27 Javascript
你真的了解BOM中的history对象吗
2017/02/13 Javascript
基于JS实现9种不同的面包屑和分布式多步骤导航效果
2017/02/21 Javascript
JavaScript数据结构之数组的表示方法示例
2017/04/12 Javascript
深入理解vue.js中$watch的oldvalue与newValue
2017/08/07 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
2019/05/22 Javascript
微信小程序 子级页面返回父级并把子级参数带回父级实现方法
2019/08/22 Javascript
如何利用JavaScript编写更好的条件语句详解
2020/08/10 Javascript
小程序实现录音功能
2020/09/22 Javascript
[02:05]2014DOTA2西雅图国际邀请赛 BBC第二天小组赛总结
2014/07/11 DOTA
Python本地与全局命名空间用法实例
2015/06/16 Python
Python的面向对象编程方式学习笔记
2016/07/12 Python
Python pass详细介绍及实例代码
2016/11/24 Python
Python实现将SQLite中的数据直接输出为CVS的方法示例
2017/07/13 Python
python 接口返回的json字符串实例
2018/03/27 Python
深入浅析python with语句简介
2018/04/11 Python
python实现打砖块游戏
2020/02/25 Python
python中有函数重载吗
2020/05/28 Python
python中前缀运算符 *和 **的用法示例详解
2020/05/28 Python
医院护士的求职信范文
2013/12/26 职场文书
本科生自荐信
2014/06/18 职场文书
亲子阅读的活动方案
2014/08/15 职场文书
2014年国庆节庆祝建国65周年比赛演讲稿
2014/09/21 职场文书
教师学习群众路线心得体会
2014/11/04 职场文书
英语教师个人工作总结
2015/02/09 职场文书
入队仪式主持词
2015/07/04 职场文书
PHP实现创建以太坊钱包转账等功能
2021/04/21 PHP
Mysql实现简易版搜索引擎的示例代码
2021/08/30 MySQL
css3 文字断裂效果
2022/04/22 HTML / CSS