如何用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 移除数组重复元素的一点说明
Nov 27 PHP
phpmail类发送邮件函数代码
Feb 20 PHP
php设计模式之命令模式的应用详解
May 21 PHP
php导入导出excel实例
Oct 25 PHP
PHP中isset()和unset()函数的用法小结
Mar 11 PHP
php实现文件下载实例分享
Jun 02 PHP
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
Nov 29 PHP
php中header设置常见文件类型的content-type
Jun 23 PHP
ThinkPHP模板Volist标签嵌套循环输出多维数组的方法
Mar 23 PHP
PHP多进程之pcntl_fork的实例详解
Oct 15 PHP
实例讲解通过​PHP创建数据库
Jan 20 PHP
PHP+Apache实现二级域名之间共享cookie的方法
Jul 24 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
深入理解:XML与对象的序列化与反序列化
2013/06/08 PHP
使用JavaScript创建新样式表和新样式规则
2016/06/14 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
让你的博客飘雪花超出屏幕依然看得见
2013/01/04 Javascript
js特殊字符过滤的示例代码
2014/03/05 Javascript
AngularJS基础学习笔记之控制器
2015/05/10 Javascript
每天一篇javascript学习小结(属性定义方法)
2015/11/19 Javascript
JQuery中attr属性和jQuery.data()学习笔记【必看】
2016/05/18 Javascript
JS+Canvas 实现下雨下雪效果
2016/05/18 Javascript
学习Angular中作用域需要注意的坑
2016/08/17 Javascript
jQuery拖拽通过八个点改变div大小
2020/11/29 Javascript
jquery中用函数来设置css样式
2016/12/22 Javascript
jQuery控制元素隐藏和显示
2017/03/03 Javascript
js实现上下左右弹框划出效果
2017/03/08 Javascript
JS实现发送短信验证后按钮倒计时功能(防止刷新倒计时失效)
2017/07/07 Javascript
Vue如何实现响应式系统
2018/07/11 Javascript
Vue插值、表达式、分隔符、指令知识小结
2018/10/12 Javascript
新手入门带你学习JavaScript引擎运行原理
2019/06/24 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
2020/11/17 Javascript
[03:00]《DAC最前线》之欧美新秀VS老将
2015/02/01 DOTA
使用Python抓取模板之家的CSS模板
2015/03/16 Python
基于Python对象引用、可变性和垃圾回收详解
2017/08/21 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
2018/04/27 Python
设置python3为默认python的方法
2018/10/31 Python
Python函数中参数是传递值还是引用详解
2019/07/02 Python
使用Python轻松完成垃圾分类(基于图像识别)
2019/07/09 Python
django 单表操作实例详解
2019/07/30 Python
python自动发微信监控报警
2019/09/06 Python
wxpython绘制圆角窗体
2019/11/18 Python
python如何实现不用装饰器实现登陆器小程序
2019/12/14 Python
Jogun Shop中文官网:韩国知名时尚男装网站
2016/10/12 全球购物
家长学校工作方案
2014/05/07 职场文书
绿色校园广播稿
2014/10/13 职场文书
个人批评与自我批评总结
2014/10/17 职场文书
优秀志愿者感言
2015/08/01 职场文书
Go语言带缓冲的通道实现
2021/04/26 Golang