PHP 各种排序算法实现代码


Posted in PHP onAugust 20, 2009
<?php 
// 功能: PHP实现各种排序算法 
// Author: windlike 
// Datetime: 2007-06-09 // 冒泡排序 
function BubbleSort($arr){ 
$num = count($arr); 
for($i=1;$i<$num;$i++){ 
for($j=$num-1;$j>=$i;$j--){ 
if($arr[$j]<$arr[$j-1]){ 
$iTemp = $arr[$j-1]; 
$arr[$j-1] = $arr[$j]; 
$arr[$j] = $iTemp; 
} 
} 
} 
return $arr; 
} 
// 交换法排序 
function ExchangeSort($arr){ 
$num = count($arr); 
for($i=0;$i<$num-1;$i++){ 
for($j=$i+1;$j<$num;$j++){ 
if($arr[$j]<$arr[$i]){ 
$iTemp = $arr[$i]; 
$arr[$i] = $arr[$j]; 
$arr[$j] = $iTemp; 
} 
} 
} 
return $arr; 
} 
// 选择法排序 
function SelectSort($arr){ 
$num = count($arr); 
for($i=0;$i<$num-1;$i++){ 
$iTemp = $arr[$i]; 
$iPos = $i; 
for($j=$i+1;$j<$num;$j++){ 
if($arr[$j]<$iTemp){ 
$iTemp = $arr[$j]; 
$iPos = $j; 
} 
} 
$arr[$iPos] = $arr[$i]; 
$arr[$i] = $iTemp; 
} 
return $arr; 
} 
// 插入法排序 
function InsertSort($arr){ 
$num = count($arr); 
for($i=1;$i<$num;$i++){ 
$iTemp = $arr[$i]; 
$iPos = $i-1; 
while(($iPos>=0) && ($iTemp<$arr[$iPos])){ 
$arr[$iPos+1] = $arr[$iPos]; 
$iPos--; 
} 
$arr[$iPos+1] = $iTemp; 
} 
return $arr; 
} 
// 快速排序 
function QuickSort($arr){ 
$num = count($arr); 
$l=$r=0; 
for($i=1;$i<$num;$i++){ 
if($arr[$i] < $arr[0]){ 
$left[] = $arr[$i]; 
$l++; 
}else{ 
$right[] = $arr[$i]; 
$r++; 
} 
} 
if($l > 1){ 
$left = QuickSort($left); 
} 
$new_arr = $left; 
$new_arr[] = $arr[0]; 
if($r > 1){ 
$right = QuickSort($right); 
} 
for($i=0;$i<$r;$i++){ 
$new_arr[] = $right[$i]; 
} 
return $new_arr; 
} 
$arr = array(7,1,6,5,2); 
$arr_new = QuickSort($arr); 
echo "<pre>"; 
print_r($arr_new); 
echo "</pre>"; 
?>
PHP 相关文章推荐
PHP调用三种数据库的方法(1)
Oct 09 PHP
PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
Dec 28 PHP
php使用curl抓取qq空间的访客信息示例
Feb 28 PHP
如何实现php图片等比例缩放
Jul 28 PHP
CI框架集成Smarty的方法分析
May 17 PHP
PHP入门教程之数学运算技巧总结
Sep 11 PHP
详解PHP用substr函数截取字符串中的某部分
Dec 03 PHP
phpcms的分类名称和类别名称的调用
Jan 05 PHP
PHP将身份证正反面两张照片合成一张图片的代码
Apr 08 PHP
Mac下php 5升级到php 7的步骤详解
Apr 26 PHP
php实现与python进行socket通信的方法示例
Aug 30 PHP
php设计模式之代理模式分析【星际争霸游戏案例】
Mar 23 PHP
谈PHP生成静态页面分析 模板+缓存+写文件
Aug 17 #PHP
数据库查询记录php 多行多列显示
Aug 15 #PHP
PHP 实现多服务器共享 SESSION 数据
Aug 15 #PHP
php 静态页面中显示动态内容
Aug 14 #PHP
MayFish PHP的MVC架构的开发框架
Aug 13 #PHP
最新的php 文件上传模型,支持多文件上传
Aug 13 #PHP
PHP DataGrid 实现代码
Aug 12 #PHP
You might like
PHP包含文件函数include、include_once、require、require_once区别总结
2014/04/05 PHP
一组PHP加密解密函数分享
2014/06/05 PHP
PHP解析目录路径的3个函数总结
2014/11/18 PHP
Laravel+jQuery实现AJAX分页效果
2016/09/14 PHP
javascript XML数据显示为HTML一例
2008/12/23 Javascript
利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
2010/07/24 Javascript
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
2012/02/03 Javascript
js中switch case循环实例代码
2013/12/30 Javascript
js判断变量初始化的三种形式及推荐用的形式
2014/07/22 Javascript
javascript实现checkbox全选的代码
2015/04/30 Javascript
浅析JavaScript动画
2015/06/10 Javascript
深入理解JS正则表达式---分组
2016/07/18 Javascript
Three.js学习之Lamber材质和Phong材质
2016/08/04 Javascript
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
2017/05/08 jQuery
VUE长按事件需求详解
2017/10/18 Javascript
vue 的点击事件获取当前点击的元素方法
2018/09/15 Javascript
详解js删除数组中的指定元素
2018/10/31 Javascript
js如何实现元素曝光上报
2019/08/07 Javascript
JavaScript中判断为整数的多种方式及保留两位小数的方法
2019/09/09 Javascript
js实现时间日期校验
2020/05/26 Javascript
从表单校验看JavaScript策略模式的使用详解
2020/10/17 Javascript
[03:37]2015国际邀请赛第四日现场精彩集锦
2015/08/08 DOTA
Python Property属性的2种用法
2015/06/21 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
2016/03/02 Python
Python抓取电影天堂电影信息的代码
2016/04/07 Python
Python网络编程之TCP套接字简单用法示例
2018/04/09 Python
对Python的交互模式和直接运行.py文件的区别详解
2019/06/29 Python
python实现图片二值化及灰度处理方式
2019/12/07 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
2019/12/11 Python
Python selenium键盘鼠标事件实现过程详解
2020/07/28 Python
UNIX文件类型
2013/08/29 面试题
会计系毕业个人自荐信格式
2013/09/23 职场文书
军训自我鉴定
2014/01/22 职场文书
学习张林森心得体会
2014/09/10 职场文书
会计专业求职信范文
2015/03/19 职场文书
靠谱准确的求职信
2019/04/02 职场文书