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中Session的概念
Oct 09 PHP
COM in PHP (winows only)
Oct 09 PHP
php下过滤html代码的函数 提高程序安全性
Mar 02 PHP
php ajax 静态分页过程形式
Sep 02 PHP
PHP输出时间差函数代码
Jan 28 PHP
php unset全局变量运用问题的深入解析
Jun 17 PHP
浅析echo(),print(),print_r(),return之间的区别
Nov 27 PHP
PHP使用glob函数遍历目录或文件夹的方法
Dec 16 PHP
php三元运算符知识汇总
Jul 02 PHP
PHP基于curl后台远程登录正方教务系统的方法
Oct 14 PHP
php封装的smarty类完整实例
Oct 19 PHP
php字符串截取函数mb_substr用法实例分析
Jun 25 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 404错误页面实现代码
2009/06/22 PHP
PHP5.3安装Zend Guard Loader图文教程
2014/09/29 PHP
PHP中浮点数计算比较及取整不准确的解决方法
2015/01/09 PHP
PHP实现添加购物车功能
2017/03/06 PHP
swoole锁的机制代码实例讲解
2021/03/04 PHP
基于jquery的二级联动菜单实现代码
2011/04/25 Javascript
js取得url地址参数实例
2013/02/22 Javascript
正则表达式中特殊符号及正则表达式的几种方法总结(replace,test,search)
2013/11/26 Javascript
jQuery实现立体式数字动态增加(animate方法)
2016/12/21 Javascript
canvas实现刮刮卡效果
2017/03/14 Javascript
bootstrap的工具提示实例代码
2017/05/17 Javascript
Vue 组件(component)教程之实现精美的日历方法示例
2018/01/08 Javascript
javascript实现文件拖拽事件
2018/03/29 Javascript
Python3里的super()和__class__使用介绍
2015/04/23 Python
图文讲解选择排序算法的原理及在Python中的实现
2016/05/04 Python
解决matplotlib库show()方法不显示图片的问题
2018/05/24 Python
Python批处理更改文件名os.rename的方法
2018/10/26 Python
Django项目中添加ldap登陆认证功能的实现
2019/04/04 Python
我喜欢你 抖音表白程序python版
2019/04/07 Python
利用anaconda保证64位和32位的python共存
2021/03/09 Python
Python字符串格式化输出代码实例
2019/11/22 Python
python 串口读取+存储+输出处理实例
2019/12/26 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
2020/01/03 Python
Python中random模块常用方法的使用教程
2020/10/04 Python
python3 kubernetes api的使用示例
2021/01/12 Python
HTML5在IE10、火狐下中文乱码问题的解决方法
2013/11/18 HTML / CSS
Mixbook加拿大:照片书,照片卡,剪贴簿,年历和日历
2017/02/21 全球购物
Orlebar Brown官网:设计师泳裤和泳装
2020/12/08 全球购物
介绍一下MD5加密算法
2016/11/12 面试题
求职简历自荐信
2013/10/20 职场文书
最经典的大学生职业生涯规划范文
2014/03/05 职场文书
讲文明知礼仪演讲稿
2014/09/13 职场文书
商务宴会祝酒词
2015/08/11 职场文书
利用Java设置Word文本框中的文字旋转方向的实现方法
2021/06/28 Java/Android
Python初识逻辑与if语句及用法大全
2021/08/07 Python
源码分析Redis中 set 和 sorted set 的使用方法
2022/03/22 Redis