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中的三元运算符使用说明
Jul 03 PHP
php 的加密函数 md5,crypt,base64_encode 等使用介绍
Apr 09 PHP
PHP @ at 记号的作用示例介绍
Oct 10 PHP
PHP中使用break跳出多重循环代码实例
Jan 21 PHP
PHP输出缓冲控制Output Control系列函数详解
Jul 02 PHP
PHP经典算法集锦【经典收藏】
Sep 14 PHP
php 常用的系统函数
Feb 07 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
Aug 14 PHP
PHP-FPM的配置与优化讲解
Mar 15 PHP
java解析json方法总结
May 16 PHP
thinkPHP+mysql+ajax实现的仿百度一下即时搜索效果详解
Jul 15 PHP
Yii框架where查询用法实例分析
Oct 22 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下正则来匹配dede模板标签的代码
2010/08/21 PHP
java微信开发之上传下载多媒体文件
2016/06/24 PHP
Prototype中dom对象方法汇总
2008/09/17 Javascript
学习ExtJS border布局
2009/10/08 Javascript
js汉字转拼音实现代码
2013/02/06 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
2013/12/19 Javascript
判断iframe里的页面是否加载完成
2014/06/06 Javascript
js动态添加onclick事件可传参数与不传参数
2014/07/29 Javascript
jQuery实现长按按钮触发事件的方法
2015/02/02 Javascript
js实现文字垂直滚动和鼠标悬停效果
2015/12/31 Javascript
angularJs中datatable实现代码
2017/06/03 Javascript
JavaScript事件对象event用法分析
2018/07/27 Javascript
layui实现点击按钮给table添加一行
2018/08/10 Javascript
Vue2.2.0+新特性整理及注意事项
2018/08/22 Javascript
微信小程序实现弹出菜单动画
2019/06/21 Javascript
javascript实现切割轮播效果
2019/11/28 Javascript
修改Vue打包后的默认文件名操作
2020/08/12 Javascript
基于Vue.js+Nuxt开发自定义弹出层组件
2020/10/09 Javascript
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
Python判断直线和矩形是否相交的方法
2015/07/14 Python
Python 迭代器工具包【推荐】
2016/05/06 Python
Python实现矩阵转置的方法分析
2017/11/24 Python
解决python 上传图片限制格式问题
2019/10/30 Python
Django 实现xadmin后台菜单改为中文
2019/11/15 Python
Skyscanner英国:苏格兰的全球三大领先航班搜索服务之一
2017/11/09 全球购物
教育孩子心得体会
2014/01/01 职场文书
餐厅考勤管理制度
2014/01/28 职场文书
学雷锋活动总结范文
2014/04/25 职场文书
社区反邪教工作方案
2014/06/16 职场文书
大学生职业生涯规划大赛作品(精品)
2014/09/17 职场文书
群众路线自查报告及整改措施
2014/11/04 职场文书
公司备用金管理制度
2015/08/04 职场文书
早上好问候语大全
2015/11/10 职场文书
新手开公司创业注意事项有哪些?
2019/07/29 职场文书
js作用域及作用域链工作引擎
2022/07/07 Javascript
canvas 中如何实现物体的框选
2022/08/05 Javascript