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写的serv-u的web申请账号的程序
Oct 09 PHP
php SQL防注入代码集合
Apr 25 PHP
PHP 变量的定义方法
Jan 26 PHP
Blitz templates 最快的PHP模板引擎
Apr 06 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
Jun 28 PHP
PHP使用ob_start生成html页面的方法
Nov 07 PHP
php使用array_search函数实现数组查找的方法
Jun 12 PHP
php获取文件类型和文件信息的方法
Jul 10 PHP
php正则判断是否为合法身份证号的方法
Mar 16 PHP
ThinkPHP 3.2.2实现事务操作的方法
May 05 PHP
PHP高效获取远程图片尺寸和大小的实现方法
Oct 20 PHP
PHP正则之正向预查与反向预查讲解与实例
Apr 06 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
当海贼王变成JOJO风
2020/03/02 日漫
世界第一个无线广播电台 KDKA
2021/03/01 无线电
上海无线电三厂简史修改版
2021/03/01 无线电
从网上搜到的phpwind 0day的代码
2006/12/07 PHP
Yii2框架dropDownList下拉菜单用法实例分析
2016/07/18 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
2017/07/03 PHP
iframe 自适应高度[在IE6 IE7 FF下测试通过]
2009/04/13 Javascript
JSON.parse 解析字符串出错的解决方法
2010/07/08 Javascript
解决IE6的PNG透明JS插件使用介绍
2013/04/17 Javascript
让input框实现类似百度的搜索提示(基于jquery事件监听)
2014/01/31 Javascript
JavaScript制作的可折叠弹出式菜单示例
2014/04/04 Javascript
Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式
2014/06/24 Javascript
微信中一些常用的js方法汇总
2015/03/12 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
2016/02/24 Javascript
不同js异步函数同步的实现方法
2016/05/28 Javascript
Bootstrap3 Grid system原理及应用详解
2016/09/30 Javascript
javascript中this用法实例详解
2017/04/06 Javascript
js截取字符串功能的实现方法
2017/09/27 Javascript
Vue创建头部组件示例代码详解
2018/10/23 Javascript
javascript中undefined的本质解析
2019/07/31 Javascript
python判断windows隐藏文件的方法
2014/03/21 Python
Python标准库之循环器(itertools)介绍
2014/11/25 Python
初探TensorFLow从文件读取图片的四种方式
2018/02/06 Python
TensorFlow实现Batch Normalization
2018/03/08 Python
如何在Cloud Studio上执行Python代码?
2019/08/09 Python
python 字典访问的三种方法小结
2019/12/05 Python
Python+Kepler.gl实现时间轮播地图过程解析
2020/07/20 Python
使用pandas实现筛选出指定列值所对应的行
2020/12/13 Python
电子商务专业实习生自我鉴定
2013/09/24 职场文书
本科生职业生涯规划书范文
2014/01/21 职场文书
生物制药专业自我鉴定
2014/02/19 职场文书
工程售后服务方案
2014/06/08 职场文书
护士实习求职信
2014/06/22 职场文书
党员个人自我剖析材料
2014/10/08 职场文书
三方股东合作协议书
2014/10/28 职场文书
golang 实现菜单树的生成方式
2021/04/28 Golang