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 相关文章推荐
计数器详细设计
Oct 09 PHP
PHP 开源框架22个简单简介
Aug 24 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
May 09 PHP
PHP临时文件的安全性分析
Jul 04 PHP
PHP中抽象类和抽象方法概念与用法分析
May 24 PHP
php可变长参数处理函数详解
Feb 22 PHP
php实现文件管理与基础功能操作
Mar 21 PHP
PHP通过curl获取接口URL的数据方法
May 31 PHP
PHP实现的数据对象映射模式详解
Mar 20 PHP
PHP FileSystem 文件系统常用api整理总结
Jul 12 PHP
php写app用的框架整理
Sep 29 PHP
Git命令之分支详解
Mar 02 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
支持oicq头像的留言簿(一)
2006/10/09 PHP
解析PHP获取当前网址及域名的实现代码
2013/06/23 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
javascript Excel操作知识点
2009/04/24 Javascript
JS刷新框架外页面七种实现代码
2013/02/18 Javascript
javascript判断是否按回车键并解决浏览器之间的差异
2014/05/13 Javascript
JavaScript中消除闭包的一般方法介绍
2015/03/16 Javascript
JavaScript前端开发之实现二进制读写操作
2015/11/04 Javascript
jQuery实现的文字hover颜色渐变效果实例
2016/02/20 Javascript
Jquery揭秘系列:ajax原生js实现详解(推荐)
2016/06/08 Javascript
Vue.js项目部署到服务器的详细步骤
2017/07/17 Javascript
vue resource post请求时遇到的坑
2017/10/19 Javascript
vue下拉列表功能实例代码
2018/04/08 Javascript
vue.js实现简单购物车功能
2020/05/30 Javascript
JS图片懒加载技术实现过程解析
2020/07/27 Javascript
Vue ElementUI实现:限制输入框只能输入正整数的问题
2020/07/31 Javascript
原生JS实现多条件筛选
2020/08/19 Javascript
Python实现字典排序、按照list中字典的某个key排序的方法示例
2018/12/18 Python
python获取交互式ssh shell的方法
2019/02/14 Python
2019 Python最新面试题及答案16道题
2019/04/11 Python
Python Image模块基本图像处理操作小结
2019/04/13 Python
Python计算信息熵实例
2020/06/18 Python
YII2 全局异常处理深入讲解
2021/03/24 PHP
公司人力资源的自我评价
2014/01/02 职场文书
前处理班长职位说明书
2014/03/01 职场文书
个人投资计划书
2014/05/01 职场文书
信用社竞聘演讲稿
2014/05/16 职场文书
会议室标语
2014/06/21 职场文书
学籍证明模板
2014/11/21 职场文书
2014年房产销售工作总结
2014/12/08 职场文书
如何利用Matlab制作一款真正的拼图小游戏
2021/05/11 Python
详解Java实现数据结构之并查集
2021/06/23 Java/Android
如何优化vue打包文件过大
2022/04/13 Vue.js
Nginx如何限制IP访问只允许特定域名访问
2022/07/23 Servers
MySQL一劳永逸永久支持输入中文的方法实例
2022/08/05 MySQL