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编程最快明白》第八讲:php启发和小结
Nov 01 PHP
php模拟服务器实现autoindex效果的方法
Mar 10 PHP
php实现字符串翻转的方法
Mar 27 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
Mar 03 PHP
php使用curl通过代理获取数据的实现方法
May 16 PHP
php原生导出excel文件的两种方法(推荐)
Nov 19 PHP
PHP对象、模式与实践之高级特性分析
Dec 08 PHP
PHP单例模式与工厂模式详解
Aug 29 PHP
php实现 master-worker 守护多进程模式的实例代码
Jul 20 PHP
TP5框架请求响应参数实例分析
Oct 17 PHP
解决php扩展安装不生效问题
Oct 25 PHP
详解Laravel服务容器的绑定与解析
Nov 05 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文本转图片自动换行的方法
2013/03/13 PHP
php获取网页中图片、DIV内容的简单方法
2014/06/19 PHP
php操作(删除,提取,增加)zip文件方法详解
2015/03/12 PHP
使用php自动备份数据库表的实现方法
2017/07/28 PHP
WordPress 照片lightbox效果的运用几点
2009/06/22 Javascript
javascript数字时钟示例分享
2014/04/23 Javascript
JavaScript常用本地对象小结
2016/03/28 Javascript
Javascript基础_标记文字的实现方法
2016/06/14 Javascript
JavaScript实现图片切换效果
2017/08/12 Javascript
three.js实现3D模型展示的示例代码
2017/12/31 Javascript
vue2.0使用swiper组件实现轮播的示例代码
2018/03/03 Javascript
详解如何在你的Vue项目配置vux
2018/06/04 Javascript
JavaScript控制浏览器全屏显示简单示例
2018/07/05 Javascript
使用mpvue搭建一个初始小程序及项目配置方法
2018/12/03 Javascript
抖音上用记事本编写爱心小程序教程
2019/04/17 Javascript
Vue 中使用富文本编译器wangEditor3的方法
2019/09/26 Javascript
vue proxy 的优势与使用场景实现
2020/06/15 Javascript
Vue js with语句原理及用法解析
2020/09/03 Javascript
微信小程序自定义胶囊样式
2020/12/27 Javascript
[02:10]DOTA2 TI10勇士令状玩法及不朽Ⅰ展示:焕新世界,如你所期
2020/05/29 DOTA
python实现读取命令行参数的方法
2015/05/22 Python
Python socket网络编程TCP/IP服务器与客户端通信
2017/01/05 Python
python如何统计序列中元素
2020/07/31 Python
Python实现随机生成手机号及正则验证手机号的方法
2018/04/25 Python
使用Python批量修改文件名的代码实例
2019/01/24 Python
Python析构函数__del__定义原理解析
2020/11/20 Python
基于Python-Pycharm实现的猴子摘桃小游戏(源代码)
2021/02/20 Python
HTML5 语音搜索只需一句代码
2013/01/03 HTML / CSS
中职生自荐信
2013/10/13 职场文书
小学捐书活动总结
2014/07/05 职场文书
北京故宫的导游词
2015/01/31 职场文书
车间统计员岗位职责
2015/04/14 职场文书
初婚初育证明范本
2015/06/18 职场文书
2016入党心得体会范文
2016/01/06 职场文书
python之json文件转xml文件案例讲解
2021/08/07 Python
磁贴还没死, 微软Win11可修改注册表找回Win10开始菜单
2021/11/21 数码科技