如何用PHP实现插入排序?


Posted in PHP onApril 10, 2013

插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据。

算法描述:

⒈ 从第一个元素开始,该元素可以认为已经被排序

⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描

⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置

⒋ 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置

⒌ 将新元素插入到下一位置中

⒍ 重复步骤2

<?php
$arr =array(123,0,5,-1,4,15);
function insertSort(&$arr){
//先默认第一个下标为0的数是排好的数
for($i=1;$i<count($arr);$i++){
//确定插入比较的数
$insertVal=$arr[$i];
//确定与前面比较的数比较
$insertIndex=$i-1;
//表示没有找到位置
while($insertIndex>=0 && $insertVal<$arr[$insertIndex]){
//把数后移
$arr[$insertIndex+1]=$arr[$insertIndex];
$insertIndex--;
}
//插入(给$insertval找到位置了)
$arr[$insertIndex+1] = $insertVal;
}
}
insertSort($arr);
print_r($arr);
?>
PHP 相关文章推荐
php数组函数序列之array_key_exists() - 查找数组键名是否存在
Oct 29 PHP
is_uploaded_file函数引发的不能上传文件问题
Oct 29 PHP
PHP错误和异长常处理总结
Mar 06 PHP
如何通过Linux命令行使用和运行PHP脚本
Jul 29 PHP
Yii2中OAuth扩展及QQ互联登录实现方法
May 16 PHP
php.ini中date.timezone设置详解
Nov 20 PHP
PHP使用xpath解析XML的方法详解
May 20 PHP
PHP实现的Redis多库选择功能单例类
Jul 27 PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
Oct 12 PHP
php微信公众号开发之音乐信息
Oct 20 PHP
PHP+jQuery实现双击修改table表格功能示例
Feb 21 PHP
PHP实现带进度条的Ajax文件上传功能示例
Jul 02 PHP
关于shopex同步ucenter的redirect问题,导致script不运行
Apr 10 #PHP
克隆一个新项目的快捷方式
Apr 10 #PHP
str_replace只替换一次字符串的方法
Apr 09 #PHP
apache和php之间协同工作的配置经验分享
Apr 08 #PHP
phpmyadmin显示utf8_general_ci中文乱码的问题终级篇
Apr 08 #PHP
PHP utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
Apr 08 #PHP
简单的php数据库操作类代码(增,删,改,查)
Apr 08 #PHP
You might like
PHP读取大文件末尾N行的高效方法推荐
2016/06/03 PHP
PHP搭建大文件切割分块上传功能示例
2017/01/04 PHP
php获取客户端IP及URL的方法示例
2017/02/03 PHP
深入讲解PHP的对象注入(Object Injection)
2017/03/01 PHP
PHP基于SMTP协议实现邮件发送实例代码
2017/04/27 PHP
来自qq的javascript面试题
2010/07/24 Javascript
jQuery实现类似淘宝购物车全选状态示例
2013/06/26 Javascript
jQuery判断复选框是否勾选的原理及示例
2014/05/21 Javascript
基于jQuery实现的双11天猫拆红包抽奖效果
2015/12/01 Javascript
javascript性能优化之事件委托实例详解
2015/12/12 Javascript
利用AngularJs实现京东首页轮播图效果
2016/09/08 Javascript
Javascript中常用的检测方法小结
2016/10/08 Javascript
JS中事件冒泡和事件捕获介绍
2016/12/13 Javascript
基于JavaScript实现验证码功能
2017/04/01 Javascript
代码详解Vuejs响应式原理
2017/12/20 Javascript
Angular 封装并发布组件的方法示例
2018/04/19 Javascript
vue中使用echarts制作圆环图的实例代码
2018/07/27 Javascript
整理 node-sass 安装失败的原因及解决办法(小结)
2020/02/19 Javascript
让IDE识别webpack的别名alias的实现方法
2020/05/06 Javascript
JS使用Chrome浏览器实现调试线上代码
2020/07/23 Javascript
Vue+element+cookie记住密码功能的简单实现方法
2020/09/20 Javascript
[00:12]2018DOTA2亚洲邀请赛 Sccc亮相SOLO赛,今年他又会有什么样的战绩?
2018/04/06 DOTA
django限制匿名用户访问及重定向的方法实例
2018/02/07 Python
详谈Python3 操作系统与路径 模块(os / os.path / pathlib)
2018/04/26 Python
实例分析python3实现并发访问水平切分表
2018/09/29 Python
英国顶尖手表珠宝品牌独家授权经销商:HS Johnson
2020/10/28 全球购物
工程力学专业毕业生求职信
2013/10/06 职场文书
医学护理毕业生自荐信
2013/11/07 职场文书
人力资源专业推荐信
2013/11/29 职场文书
护士的自我鉴定
2014/02/07 职场文书
护理中职生求职信范文
2014/02/24 职场文书
农村婚礼主持词
2014/03/13 职场文书
五年级下册复习计划
2015/01/19 职场文书
《风筝》教学反思
2016/02/23 职场文书
Python+Appium自动化测试的实战
2021/06/30 Python
ROS系统将python包编译为可执行文件的简单步骤
2021/07/25 Python