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 相关文章推荐
模拟SQLSERVER的两个函数:dateadd(),datediff()
Oct 09 PHP
PHP 时间转换Unix时间戳代码
Jan 22 PHP
php checkbox复选框值的获取与checkbox默认值输出方法
May 15 PHP
php输出1000以内质数(素数)示例
Feb 16 PHP
php实现批量下载百度云盘文件例子分享
Apr 10 PHP
2014年10个最佳的PHP图像操作库
Jul 14 PHP
php如何获取文件的扩展名
Oct 28 PHP
Laravel5.1自定义500错误页面示例
Oct 09 PHP
PHP设置Cookie的HTTPONLY属性方法
Feb 09 PHP
php将从数据库中获得的数据转换成json格式并输出的方法
Aug 21 PHP
PHP7匿名类的用法示例
Apr 05 PHP
PHP $O00OO0=urldecode &amp; eval 解密,记一次商业源码的去后门
Sep 13 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中error_reporting()函数的用法(修改PHP屏蔽错误)
2011/07/01 PHP
PHP json_encode() 函数详解及中文乱码问题
2015/11/05 PHP
解决laravel 5.1报错:No supported encrypter found的办法
2017/06/07 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
php解决约瑟夫环算法实例分析
2019/09/30 PHP
alixixi runcode.asp的代码不错的应用
2007/08/08 Javascript
javascript自然分类法算法实现代码
2013/10/11 Javascript
子页向父页传值示例
2013/11/27 Javascript
JavaScript截取指定长度字符串点击可以展开全部代码
2015/12/04 Javascript
深入浅析Extjs中store分组功能的使用方法
2016/04/20 Javascript
分享一个插件实现水珠自动下落效果
2016/06/01 Javascript
全面解析Bootstrap表单样式的使用
2016/09/09 Javascript
jQuery包裹节点用法完整示例
2016/09/13 Javascript
纯JS焦点图特效实例(可一个页面多用)
2016/12/07 Javascript
PHP实现记录代码运行时间封装类实例教程
2017/05/08 Javascript
详解javascript常用工具类的封装
2018/01/30 Javascript
基于cropper.js封装vue实现在线图片裁剪组件功能
2018/03/01 Javascript
webpack 插件html-webpack-plugin的具体使用
2018/04/09 Javascript
javascript判断一个变量是数组还是对象
2019/04/10 Javascript
elementUI select组件使用及注意事项详解
2019/05/29 Javascript
python实现dict版图遍历示例
2014/02/19 Python
Python3写入文件常用方法实例分析
2015/05/22 Python
Python中使用urllib2模块编写爬虫的简单上手示例
2016/01/20 Python
Python实现简单的HttpServer服务器示例
2017/09/25 Python
Python实现控制台中的进度条功能代码
2017/12/22 Python
使用Python对微信好友进行数据分析
2018/06/27 Python
详解js文件通过python访问数据库方法
2019/03/03 Python
优秀生推荐信范文
2013/11/28 职场文书
幼儿园家长会邀请函
2014/01/15 职场文书
2014年三八妇女节活动方案
2014/02/28 职场文书
平面设计师岗位职责
2014/09/18 职场文书
逃课打麻将检讨书
2014/10/05 职场文书
政风行风评议工作总结
2014/10/21 职场文书
go语言基础 seek光标位置os包的使用
2021/05/09 Golang
Python中rapidjson参数校验实现
2021/07/25 Python
MySQL分区路径子分区再分区
2022/04/13 MySQL