php中的一些数组排序方法分享


Posted in PHP onJuly 20, 2012

A.内部排序(直接加载到内存进行排序):包括交换式排序(冒泡和快速法)、选择式排序、插入式排序
B.外部排序(因数据量大,需借助外部存储进行排序):包括合并排序、直接合并排序

【冒泡排序:从后向前,依次比较相邻元素的排序码,若发现逆序则交换,一轮结束后,再来一轮,直到所有相邻数无逆序,即按顺序排完】

function maoPao($arr,$style)//【默认传递的是值,不是地址。如果在$arr前加个&,则和$arr1指向同一个地址,函数外的$arr1也被排好了】 
{ 
$temp=0; 
$flag=false; 
for($i=0;$i<count($arr)-1;$i++) 
{ 
for($j=0;$j<count($arr)-1-$i;$j++) 
{ 
if($style=='bts') $op=$arr[$j]<$arr[$j+1]; 
else if($style=='stb') $op=$arr[$j]>$arr[$j+1]; 
if($op) 
{ 
$temp=$arr[$j]; 
$arr[$j]=$arr[$j+1]; 
$arr[$j+1]=$temp; 
$flag=true; 
} 
} 
if($flag==false) 
{ 
break;//当一次横向循环下来flag==false;说明纵向循环里每次相邻元素比较大小时if条件均不满足,即从小到大已排好,无需再横向循环 
} 
} 
foreach ($arr as $key => $value) 
{ 
echo $value.','; 
} 
} 
$arr1=array(101,101,-9,-8,0,76,1,57,43,90,23,-56); 
maoPao($arr1,'stb');//small to big

【选择排序:第二个数至第n个数分别与第一个数比较,进行交换,第三个数至第n个数分别与第二个数比较,进行交换,直到排完】
function selectSort($arr,$style) 
{ 
$temp=0; 
$flag=false; 
for($i=0;$i<count($arr)-1;$i++) 
{ 
for($j=$i+1;$j<count($arr);$j++) 
{ 
if($style=='bts') $op=$arr[$i]<$arr[$j]; 
else if($style=='stb') $op=$arr[$i]>$arr[$j]; 
if($op) 
{ 
$temp=$arr[$i]; 
$arr[$i]=$arr[$j]; 
$arr[$j]=$temp; 
$flag=true; 
} 
} 
if($flag==false) 
{ 
break; 
} 
} 
foreach ($arr as $key => $value) 
{ 
echo $value.','; 
} 
} 
$arr1=array(21.5,33,90,7,-4,5,55,11); 
selectSort($arr1,'stb');

function selectSort($arr,$style) 
{ 
$temp=0; 
$flag=false; 
for($i=0;$i<count($arr)-1;$i++) 
{ 
for($j=$i+1;$j<count($arr);$j++) 
{ 
if($style=='bts') $op=$arr[$i]<$arr[$j]; 
else if($style=='stb') $op=$arr[$i]>$arr[$j]; 
if($op) 
{ 
$temp=$arr[$i]; 
$arr[$i]=$arr[$j]; 
$arr[$j]=$temp; 
$flag=true; 
} 
} 
if($flag==false) 
{ 
break; 
} 
} 
foreach ($arr as $key => $value) 
{ 
echo $value.','; 
} 
} 
$arr1=array(21.5,33,90,7,-4,5,55,11); 
selectSort($arr1,'stb'); 
echo "<br/>";
PHP 相关文章推荐
Dedecms常用函数解析
Feb 01 PHP
php Undefined index的问题
Jun 01 PHP
php获取远程图片的两种 CURL方式和sockets方式获取远程图片
Nov 07 PHP
PHP strstr 函数判断字符串是否否存在的实例代码
Sep 28 PHP
PHP中获取时间的下一周下个月的方法
Mar 18 PHP
PHP SOCKET编程详解
May 22 PHP
php删除数组中重复元素的方法
Dec 22 PHP
浅谈PHP Cookie处理函数
Jun 10 PHP
PHP简单字符串过滤方法示例
Sep 04 PHP
详解PHP数据压缩、加解密(pack, unpack)
Dec 17 PHP
微信公众号开发之获取位置信息php代码
Jun 13 PHP
PHP基于面向对象封装的分页类示例
Mar 15 PHP
xml在joomla表单中的应用详解分享
Jul 19 #PHP
ajax在joomla中的原生态应用代码
Jul 19 #PHP
php插入中文到sqlserver 2008里出现乱码的解决办法分享
Jul 19 #PHP
php在项目中寻找代码的坏味道(综艺命名)
Jul 19 #PHP
PHP的5个安全措施小结
Jul 17 #PHP
php日期转时间戳,指定日期转换成时间戳
Jul 17 #PHP
UCenter 批量添加用户的php代码
Jul 17 #PHP
You might like
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
2019/06/14 PHP
JavaScript 学习笔记(十五)
2010/01/28 Javascript
比较搞笑的js陷阱题
2010/02/07 Javascript
event.X和event.clientX的区别分析
2011/10/06 Javascript
JavaScript自定义事件介绍
2013/08/29 Javascript
ie9 提示'console' 未定义问题的解决方法
2014/03/20 Javascript
js/jquery判断浏览器类型的方法小结
2015/05/12 Javascript
javascript带回调函数的异步脚本载入方法实例分析
2015/07/02 Javascript
jQuery 选择同时包含两个class的元素的实现方法
2016/06/01 Javascript
js实现交通灯效果
2017/01/13 Javascript
基于JQuery的购物车添加删除以及结算功能示例
2017/03/08 Javascript
node.js(express)中使用Jcrop进行图片剪切上传功能
2017/04/21 Javascript
layui分页效果实现代码
2017/05/19 Javascript
Node.js 回调函数实例详解
2017/07/06 Javascript
js中的闭包学习心得
2018/02/06 Javascript
微信小程序实现批量倒计时功能
2020/11/01 Javascript
vue集成chart.js的实现方法
2019/08/20 Javascript
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
2019/09/06 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
2020/08/07 Javascript
python 自动提交和抓取网页
2009/07/13 Python
详解K-means算法在Python中的实现
2017/12/05 Python
python导入csv文件出现SyntaxError问题分析
2017/12/15 Python
python Flask 装饰器顺序问题解决
2018/08/08 Python
python图像和办公文档处理总结
2019/05/28 Python
Python数据正态性检验实现过程
2020/04/18 Python
python实现学生成绩测评系统
2020/06/22 Python
在网络中有两台主机A和B,并通过路由器和其他交换设备连接起来,已经确认物理连接正确无误,怎么来测试这两台机器是否连通?如果不通,怎么来判断故障点?怎么排
2014/01/13 面试题
请用Java实现列出某个目录下的所有文件
2013/09/23 面试题
仓库理货员岗位职责
2013/12/18 职场文书
市场开发与营销专业求职信
2013/12/31 职场文书
实习生自我评价
2014/01/18 职场文书
《夏夜多美》教学反思
2014/02/17 职场文书
艺人经纪人岗位职责
2014/04/15 职场文书
高三英语教学计划
2015/01/23 职场文书
岁月神偷观后感
2015/06/11 职场文书
2016七夕情人节广告语
2016/01/28 职场文书