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
如何分别全角和半角以避免乱码
Oct 09 PHP
php学习笔记 类的声明与对象实例化
Jun 13 PHP
php empty() 检查一个变量是否为空
Nov 10 PHP
thinkphp连贯操作实例分析
Nov 22 PHP
PHP连接Nginx服务器并解析Nginx日志的方法
Aug 16 PHP
twig里使用js变量的方法
Feb 05 PHP
解读PHP中上传文件的处理问题
May 29 PHP
php生成静态页面并实现预览功能
Jun 27 PHP
php设计模式之中介者模式分析【星际争霸游戏案例】
Mar 23 PHP
详解php反序列化
Jun 10 PHP
laravel7学习之无限级分类的最新实现方法
Sep 30 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/12/06 PHP
php 常用类汇总 推荐收藏
2010/05/13 PHP
PHP简洁函数小结
2011/08/12 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
2014/08/21 PHP
php+ajax登录跳转登录实现思路
2016/07/31 PHP
php字符串过滤strip_tags()函数用法实例分析
2019/06/24 PHP
javascript (用setTimeout而非setInterval)
2011/12/28 Javascript
js原型链与继承解析(初体验)
2016/05/09 Javascript
JS函数的定义与调用方法推荐
2016/05/12 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
2017/02/21 Javascript
nodejs中art-template模板语法的引入及冲突解决方案
2017/11/07 NodeJs
Vue+Koa2 打包后进行线上部署的教程详解
2019/07/31 Javascript
[44:47]Ti4 循环赛第三日 iG vs NaVi
2014/07/12 DOTA
[01:38]完美世界DOTA2联赛(PWL)宣传片:第一站
2020/10/26 DOTA
[45:18]完美世界DOTA2联赛循环赛 PXG vs IO 第二场 11.06
2020/11/09 DOTA
[06:57]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD 选手采访
2021/03/11 DOTA
Python2和Python3.6环境解决共存问题
2018/11/09 Python
pycharm 实现显示project 选项卡的方法
2019/01/17 Python
Python使用scrapy爬取阳光热线问政平台过程解析
2019/08/14 Python
Python列表删除元素del、pop()和remove()的区别小结
2019/09/11 Python
python super的使用方法及实例详解
2019/09/25 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
2020/07/01 Python
英国知名的护肤彩妆与时尚配饰大型综合零售电商:Unineed
2016/11/21 全球购物
行政总监岗位职责
2013/12/05 职场文书
物理研修随笔感言
2014/02/14 职场文书
《地震中的父与子》教学反思
2014/04/10 职场文书
幼儿园评语大全
2014/04/17 职场文书
2014年综治宣传月活动总结
2014/04/28 职场文书
给校长的建议书600字
2014/05/15 职场文书
奉献家乡演讲稿
2014/09/13 职场文书
国家机关领导干部民主生活会对照检查材料思想汇报
2014/09/17 职场文书
司考复习计划
2015/01/19 职场文书
财产保全担保书
2015/01/20 职场文书
写好Python代码的几条重要技巧
2021/05/21 Python
python单向链表实例详解
2022/05/25 Python
Java中的Kotlin 内部类原理
2022/06/16 Java/Android