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中取得文件的后缀名?
Feb 20 PHP
解析VS2010利用VS.PHP插件调试PHP的方法
Jul 19 PHP
php创建sprite
Feb 11 PHP
php调用google接口生成二维码示例
Apr 28 PHP
yii框架builder、update、delete使用方法
Apr 30 PHP
php+mysql实现无限级分类
Nov 11 PHP
PHP第三方登录―QQ登录实现方法
Feb 06 PHP
自制PHP框架之路由与控制器
May 07 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
Mar 07 PHP
PHP __call()方法实现委托示例
May 20 PHP
php获取是星期几的的一些常用姿势
Dec 15 PHP
php下的原生ajax请求用法实例分析
Feb 28 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
PHPShop存在多个安全漏洞
2006/10/09 PHP
php验证手机号码(支持归属地查询及编码为UTF8)
2013/02/01 PHP
php实现把url转换迅雷thunder资源下载地址的方法
2014/11/07 PHP
[原创]PHP简单开启curl的方法(测试可行)
2016/01/11 PHP
浅析Yii2集成富文本编辑器redactor实例教程
2016/04/25 PHP
PHP实现简单ajax Loading加载功能示例
2016/12/28 PHP
ThinkPHP框架实现FTP图片上传功能示例
2019/04/08 PHP
Laravel框架之解决前端显示图片问题
2019/10/24 PHP
jquery jqPlot API 中文使用教程(非常强大的图表工具)
2011/08/15 Javascript
javascript加号&quot;+&quot;的二义性说明
2013/03/04 Javascript
js动态创建、删除表格示例代码
2013/08/07 Javascript
JS实现仿QQ聊天窗口抖动特效
2015/05/10 Javascript
JavaScript中Number.MAX_VALUE属性的使用方法
2015/06/04 Javascript
angular基于路由控制ui-router实现系统权限控制
2016/09/27 Javascript
javascript replace()第二个参数为函数时的参数用法
2016/12/26 Javascript
jQuery Datatable 多个查询条件自定义提交事件(推荐)
2017/08/24 jQuery
javascript按钮禁用和启用的效果实例代码
2017/10/29 Javascript
VUE element-ui 写个复用Table组件的示例代码
2017/11/18 Javascript
微信小程序异步API为Promise简化异步编程的操作方法
2018/08/14 Javascript
vue-router的使用方法及含参数的配置方法
2018/11/13 Javascript
[01:11]辉夜杯战队访谈宣传片—CDEC.Y
2015/12/26 DOTA
[04:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster 选手采访
2021/03/11 DOTA
python基础练习之几个简单的游戏
2017/11/10 Python
python3调用R的示例代码
2018/02/23 Python
PYTHON基础-时间日期处理小结
2018/05/05 Python
Python中format()格式输出全解
2019/04/12 Python
Python API自动化框架总结
2019/11/12 Python
Python实现Word文档转换Markdown的示例
2020/12/22 Python
美国著名的婴儿学步鞋老品牌:Robeez
2016/08/20 全球购物
会展中心部门工作职责
2013/11/27 职场文书
魅力教师事迹材料
2014/01/10 职场文书
优秀的2014年两会精神解读
2014/03/17 职场文书
银行优秀员工事迹材料
2014/05/29 职场文书
再读《皇帝的新衣》的读后感悟!
2019/08/07 职场文书
CSS变量实现主题切换的方法
2021/06/23 HTML / CSS
Android Rxjava3 使用场景详解
2022/04/07 Java/Android