如何用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实现验证码功能
Oct 09 PHP
phpMyAdmin 安装教程全攻略
Mar 19 PHP
实现dedecms全站URL静态化改造的代码
Mar 29 PHP
php数组函数序列之array_unique() - 去除数组中重复的元素值
Oct 29 PHP
php检测用户是否用手机(Mobile)访问网站的类
Jan 09 PHP
PHP伪静态Rewrite设置之APACHE篇
Jul 30 PHP
PHP.ini安全配置检测工具pcc简单介绍
Jul 02 PHP
php判断当前操作系统类型
Oct 28 PHP
Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
Mar 21 PHP
常用PHP数组排序函数归纳
Aug 08 PHP
PHP数字前补0的自带函数sprintf 和number_format的用法(详解)
Feb 06 PHP
Yii框架的路由配置方法分析
Sep 09 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 404错误页面实现代码
2009/06/22 PHP
比较好用的PHP防注入漏洞过滤函数代码
2012/04/11 PHP
Php-Redis安装测试笔记
2015/03/05 PHP
php实现的redis缓存类定义与使用方法示例
2017/08/09 PHP
初学JavaScript_03(ExtJs Grid的简单使用)
2008/10/02 Javascript
javascript 日期时间函数(经典+完善+实用)
2009/05/27 Javascript
JQuery操作iframe父页面与子页面的元素与方法(实例讲解)
2013/11/20 Javascript
js实现按钮加背景图片常用方法
2014/11/01 Javascript
javascript三元运算符用法实例
2015/04/16 Javascript
常用jQuery代码分享
2015/07/14 Javascript
js控制多图左右滚动切换效果代码分享
2015/08/26 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
2016/02/28 Javascript
Angularjs+bootstrap+table多选(全选)支持单击行选中实现编辑、删除功能
2017/03/27 Javascript
简单实现jQuery弹幕效果
2017/05/06 jQuery
JS实现的倒计时恢复按钮点击功能【可用于协议阅读倒计时】
2018/04/19 Javascript
你或许不知道的一些npm实用技巧
2019/07/04 Javascript
原生js代码能实现call和bind吗
2019/07/31 Javascript
[01:15:56]2018DOTA2亚洲邀请赛3月30日 小组赛A组 TNC VS Newbee
2018/03/31 DOTA
python 示例分享---逻辑推理编程解决八皇后
2014/07/20 Python
基于进程内通讯的python聊天室实现方法
2015/06/28 Python
浅析Python中yield关键词的作用与用法
2016/11/29 Python
python实现上传下载文件功能
2020/11/19 Python
influx+grafana自定义python采集数据和一些坑的总结
2018/09/17 Python
python 项目目录结构设置
2020/02/14 Python
浅谈css3中的前缀
2016/07/20 HTML / CSS
高中生自我鉴定范文
2013/10/30 职场文书
物业招聘计划书
2014/01/10 职场文书
2014年元旦感言
2014/03/06 职场文书
任命书怎么写
2014/06/04 职场文书
诚实守信道德模范事迹材料
2014/08/15 职场文书
职工小家建设活动方案
2014/08/25 职场文书
永远跟党走演讲稿
2014/09/12 职场文书
向雷锋同志学习倡议书
2015/04/27 职场文书
2015年安全保卫工作总结
2015/05/14 职场文书
教师节祝酒词
2015/08/11 职场文书
PyQt5 显示超清高分辨率图片的方法
2021/04/11 Python