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
Dec 14 PHP
探讨php define()函数及defined()函数使用详解
Jun 09 PHP
深入php socket的讲解与实例分析
Jun 13 PHP
PHP实现的封装验证码类详解
Jun 18 PHP
php下载excel无法打开的解决方法
Dec 24 PHP
php使用gettimeofday函数返回当前时间并存放在关联数组里
Mar 19 PHP
PHP实现的购物车类实例
Jun 17 PHP
提高php编程效率技巧
Aug 13 PHP
CodeIgniter配置之autoload.php自动加载用法分析
Jan 20 PHP
php session的锁和并发
Jan 22 PHP
PHP实现财务审核通过后返现金额到客户的功能
Jul 04 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
Oct 10 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防止表单重复提交的几种常用方法汇总
2014/08/19 PHP
使用Thinkphp框架开发移动端接口
2015/08/05 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
2016/07/28 PHP
Yii框架中jquery表单验证插件用法示例
2016/10/18 PHP
JavaScript中的Location地址对象
2008/01/16 Javascript
Javascript 中文字符串处理额外注意事项
2009/11/15 Javascript
跨浏览器的事件对象介绍
2012/06/27 Javascript
总结Javascript中的隐式类型转换
2016/08/24 Javascript
JS简单获取日期相差天数的方法
2017/04/24 Javascript
js合并两个数组生成合并后的key:value数组
2018/05/09 Javascript
JS 实现分页打印功能
2018/05/16 Javascript
微信小程序提取公用函数到util.js及使用方法示例
2019/01/10 Javascript
详解VUE单页应用骨架屏方案
2019/01/17 Javascript
微信小程序开发搜索功能实现(前端+后端+数据库)
2020/03/04 Javascript
[49:11]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第二场 12.20
2020/12/23 DOTA
Python中使用Inotify监控文件实例
2015/02/14 Python
简单介绍Python中的readline()方法的使用
2015/05/24 Python
SQLite3中文编码 Python的实现
2017/01/11 Python
Python脚本实现自动将数据库备份到 Dropbox
2017/02/06 Python
python+opencv+caffe+摄像头做目标检测的实例代码
2018/08/03 Python
python实现AES加密和解密
2019/03/27 Python
Python常用模块之requests模块用法分析
2019/05/15 Python
Python学习笔记之lambda表达式用法详解
2019/08/08 Python
Python列表解析操作实例总结
2020/02/26 Python
python中id函数运行方式
2020/07/03 Python
css3 响应式媒体查询的示例代码
2019/09/25 HTML / CSS
html5的新玩法——语音搜索
2013/01/03 HTML / CSS
HTML5 Canvas实现烟花绽放特效
2016/03/02 HTML / CSS
Rag & Bone官网:瑞格布恩高级成衣
2018/04/19 全球购物
元旦趣味活动方案
2014/08/22 职场文书
干部作风整顿自我剖析材料和整改措施
2014/09/18 职场文书
2014年学前班工作总结
2014/12/08 职场文书
2015年教师新年寄语
2014/12/08 职场文书
立秋之描写立秋的作文(五年级)
2019/08/08 职场文书
解决jupyter notebook启动后没有token的坑
2021/04/24 Python
详解CSS伪元素的妙用单标签之美
2021/05/25 HTML / CSS