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重新实现PHP脚本引擎内置函数
Mar 06 PHP
PHP iconv 函数转gb2312的bug解决方法
Oct 11 PHP
在php中判断一个请求是ajax请求还是普通请求的方法
Jun 28 PHP
PHP程序级守护进程的实现与优化的使用概述
May 02 PHP
深入php socket的讲解与实例分析
Jun 13 PHP
php如何控制用户对图片的访问 PHP禁止图片盗链
Mar 25 PHP
PHP实现mysqli批量执行多条语句的方法示例
Jul 22 PHP
kindeditor 加入七牛云上传的实例讲解
Nov 12 PHP
PHP精确到毫秒秒杀倒计时实例详解
Mar 14 PHP
使用Zookeeper分布式部署PHP应用程序
Mar 15 PHP
php-fpm重启导致的程序执行中断问题详解
Apr 29 PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
Feb 26 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设计模式之单例模式定义与用法分析
2019/03/26 PHP
jquery 多行文本框(textarea)高度变化
2013/07/03 Javascript
Javascript基础教程之函数对象和属性
2015/01/18 Javascript
js控制网页背景音乐播放与停止的方法
2015/02/06 Javascript
高效Web开发的10个jQuery代码片段
2016/07/22 Javascript
jquery实现ajax提交表单信息的简单方法(推荐)
2016/08/24 Javascript
详解ES6中的let命令
2020/04/05 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
2017/04/13 Javascript
详解webpack3如何正确引用并使用jQuery库
2017/08/26 jQuery
在 Angular6 中使用 HTTP 请求服务端数据的步骤详解
2018/08/06 Javascript
jQuery轮播图实例详解
2018/08/15 jQuery
实例详解带参数的 npm script
2019/05/28 Javascript
vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)
2019/06/04 Javascript
[02:19]DOTA2女子战队FOX视频专访:希望更多美眉一起加入
2013/10/15 DOTA
[01:35]2018完美盛典章节片——共竞
2018/12/17 DOTA
浅谈Python由__dict__和dir()引发的一些思考
2017/10/30 Python
Python中的集合介绍
2019/01/28 Python
【python】matplotlib动态显示详解
2019/04/11 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
2019/11/29 Python
tensorflow 限制显存大小的实现
2020/02/03 Python
python虚拟环境模块venv使用及示例
2020/03/04 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
2020/03/05 Python
使用 css3 实现圆形进度条的示例
2017/07/05 HTML / CSS
Steve Madden官网:美国鞋类品牌
2017/01/29 全球购物
戴森台湾线上商城:Dyson Taiwan
2018/05/21 全球购物
htmlentities() 和 htmlspecialchars()有什么区别
2015/07/01 面试题
Java程序员面试题
2013/07/15 面试题
本科毕业生的求职信范文
2013/11/20 职场文书
应届电子商务毕业自荐书范文
2014/02/11 职场文书
不忘国耻振兴中华演讲稿
2014/05/14 职场文书
委托书格式
2014/08/01 职场文书
文化苦旅读书笔记
2015/06/29 职场文书
数据库连接池
2021/04/06 MySQL
Ajax常用封装库——Axios的使用
2021/05/08 Javascript
教你怎么用PyCharm为同一服务器配置多个python解释器
2021/05/31 Python
React-vscode使用jsx语法的问题及解决方法
2021/06/21 Javascript