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调用数据库的存贮过程
Oct 09 PHP
解析PHP 使用curl提交json格式数据
Jun 29 PHP
php中出现空白页的原因及解决方法汇总
Jul 08 PHP
php去除html标记的原生函数详解
Jan 27 PHP
php生成zip文件类实例
Apr 07 PHP
php实现比较两个文件夹异同的方法
Jun 18 PHP
使用phpQuery获取数组的实例
Mar 13 PHP
PHP编程中的Session阻塞问题与解决方法分析
Aug 07 PHP
详解PHP中mb_strpos的使用
Feb 04 PHP
PHP实现数组根据某个单元字段排序操作示例
Aug 01 PHP
Codeigniter里的无刷新上传的实现代码
Apr 14 PHP
php设计模式之适配器模式原理、用法及注意事项详解
Sep 24 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
利用discuz自带通行证整合dedecms的方法以及文件下载
2007/03/06 PHP
关于zend studio 出现乱码问题的总结
2013/06/23 PHP
ThinkPHP实现跨模块调用操作方法概述
2014/06/20 PHP
php生成百度sitemap站点地图类函数实例
2014/10/17 PHP
php好代码风格的阶段性总结
2016/06/25 PHP
PHP时间处理类操作示例
2018/09/05 PHP
php5.x禁用eval的操作方法
2018/10/19 PHP
拉动滚动条加载数据的jquery代码
2012/05/03 Javascript
如何让easyui gridview 宽度自适应窗口改变及fitColumns应用
2013/01/25 Javascript
Jquery动态替换div内容及动态展示的方法
2015/01/23 Javascript
基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
2015/12/03 Javascript
Vue.js使用v-show和v-if的注意事项
2016/12/13 Javascript
bootstrap实现每隔5秒自动轮播效果
2016/12/20 Javascript
React实现点击删除列表中对应项
2017/01/10 Javascript
关于使用js算总价的问题
2017/06/23 Javascript
解决AjaxFileupload 上传时会出现连接重置的问题
2017/07/07 Javascript
Node.js实现连接mysql数据库功能示例
2017/09/15 Javascript
基于原生js运动方式关键点的总结(推荐)
2017/10/01 Javascript
JS数据类型判断的几种常用方法
2020/07/07 Javascript
[08:40]Navi Vs Newbee
2018/06/07 DOTA
[01:47]2018年度DOTA2最具人气解说-完美盛典
2018/12/16 DOTA
python赋值操作方法分享
2013/03/23 Python
Python 读取指定文件夹下的所有图像方法
2018/04/27 Python
基于python批量处理dat文件及科学计算方法详解
2018/05/08 Python
python flask几分钟实现web服务的例子
2019/07/26 Python
Python高级特性——详解多维数组切片(Slice)
2019/11/26 Python
tensorflow2.0与tensorflow1.0的性能区别介绍
2020/02/07 Python
Python基于argparse与ConfigParser库进行入参解析与ini parser
2021/02/02 Python
检测浏览器是否支持html5视频的代码
2013/03/28 HTML / CSS
百度吧主申请感言
2014/01/12 职场文书
离婚协议书格式
2014/11/21 职场文书
2014年平安创建工作总结
2014/11/24 职场文书
2016年综治和平安建设宣传月活动总结
2016/04/01 职场文书
如何把新闻人物写得立体、鲜活?
2019/08/14 职场文书
原生JavaScript实现简单五子棋游戏
2021/06/28 Javascript
聊聊CSS粘性定位sticky案例解析
2022/06/01 HTML / CSS