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+Html+缓存
Dec 20 PHP
黑夜路人出的几道php笔试题
Aug 04 PHP
php 随机记录mysql rand()造成CPU 100%的解决办法
May 18 PHP
解析PHP缓存函数的使用说明
May 10 PHP
php操作mysql数据库的基本类代码
Feb 25 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
May 04 PHP
php_screw安装使用教程(另一个PHP代码加密实现)
May 29 PHP
PH P5.2至5.5、5.6的新增功能详解
Jul 14 PHP
PHP通过插入mysql数据来实现多机互锁实例
Nov 05 PHP
PHP基于CURL进行POST数据上传实例
Nov 10 PHP
浅析PHP中Session可能会引起并发问题
Jul 23 PHP
Laravel框架路由设置与使用示例
Jun 12 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
几种显示数据的方法的比较
2006/10/09 PHP
php 的加密函数 md5,crypt,base64_encode 等使用介绍
2012/04/09 PHP
phpmailer中文乱码问题的解决方法
2014/04/22 PHP
PHP小教程之实现链表
2014/06/09 PHP
php 调用ffmpeg获取视频信息的简单实现
2017/04/03 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
extjs之去除s.gif的影响
2010/12/25 Javascript
Javascript实现返回上一页面并刷新的小例子
2013/12/11 Javascript
jquery 抽奖小程序实现代码
2016/10/12 Javascript
bootstrap精简教程_动力节点Java学院整理
2017/07/14 Javascript
Angular动态绑定样式及改变UI框架样式的方法小结
2018/09/03 Javascript
详解小程序BackgroundAudioManager踩坑之旅
2019/12/08 Javascript
antd中table展开行默认展示,且不需要前边的加号操作
2020/11/02 Javascript
[01:14:35]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第一局
2016/02/26 DOTA
[01:03:09]完美世界DOTA2联赛PWL S2 Forest vs SZ 第二场 11.25
2020/11/26 DOTA
在Python中使用lambda高效操作列表的教程
2015/04/24 Python
Python创建二维数组实例(关于list的一个小坑)
2017/11/07 Python
解决PyCharm同目录下导入模块会报错的问题
2018/10/13 Python
对python3 sort sorted 函数的应用详解
2019/06/27 Python
关于PyTorch源码解读之torchvision.models
2019/08/17 Python
利用Python的turtle库绘制玫瑰教程
2019/11/23 Python
使用Python实现画一个中国地图
2019/11/23 Python
python实现QQ邮箱发送邮件
2020/03/06 Python
python中Array和DataFrame相互转换的实例讲解
2021/02/03 Python
全球知名鞋履品牌授权零售商:Journeys
2016/09/17 全球购物
Luxplus丹麦:香水和个人护理折扣
2018/04/23 全球购物
日本乐天德国站:Rakuten.de
2019/05/16 全球购物
杭州联环马网络笔试题面试题
2013/08/04 面试题
大学生学习党课思想汇报
2014/01/03 职场文书
初三物理教学反思
2014/01/21 职场文书
驾驶员安全责任书
2014/07/22 职场文书
4S店客服专员岗位职责
2015/04/07 职场文书
2015年园林绿化工作总结
2015/05/23 职场文书
未婚证明范本
2015/06/15 职场文书
800字作文之大雪
2019/12/04 职场文书
HAM-2000摩机图
2021/04/22 无线电