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 相关文章推荐
Zend Guard一些常见问题解答
Sep 11 PHP
PHP类中Static方法效率测试代码
Oct 17 PHP
php页码形式分页函数支持静态化地址及ajax分页
Mar 28 PHP
php截取html字符串及自动补全html标签的方法
Jan 15 PHP
PHP记录搜索引擎蜘蛛访问网站足迹的方法
Apr 15 PHP
php实现用手机关闭计算机(电脑)的方法
Apr 22 PHP
php简单实现短网址(短链)还原的方法(测试可用)
May 09 PHP
php使用Jpgraph创建柱状图展示年度收支表效果示例
Feb 15 PHP
php生成0~1随机小数的方法(必看)
Apr 05 PHP
浅谈PHP面向对象之访问者模式+组合模式
May 22 PHP
PHP实现字符串大小写转函数的功能实例
Feb 06 PHP
PHP实现简单登录界面
Oct 23 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 年龄计算函数(精确到天)
2012/06/07 PHP
PHP中全局变量global和$GLOBALS[]的区别分析
2012/08/06 PHP
php判断并删除空目录及空子目录的方法
2015/02/11 PHP
PHP版本如何选择?应该使用哪个版本?
2015/05/13 PHP
PHP Opcache安装和配置方法介绍
2015/05/28 PHP
php实现的数字验证码及数字运算验证码
2015/07/30 PHP
PHP实现简易blog的制作
2016/10/24 PHP
PHP+Apache环境中如何隐藏Apache版本
2017/11/24 PHP
js 获取中文拼音,Select自动匹配字母获取值的代码
2009/09/23 Javascript
javaScript call 函数的用法说明
2010/04/09 Javascript
js 编码转换 gb2312 和 utf8 互转的2种方法
2013/08/07 Javascript
验证控件与Button的OnClientClick事件详细解析
2013/12/04 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
2014/03/10 Javascript
Nodejs进程管理模块forever详解
2014/06/01 NodeJs
jquery+javascript编写国籍控件
2015/02/12 Javascript
Javascript实现的Map集合工具类完整实例
2015/07/31 Javascript
微信小程序 教程之wxapp 视图容器 view
2016/10/19 Javascript
Angular下H5上传图片的方法(可多张上传)
2017/01/09 Javascript
关于AngularJs数据的本地存储详解
2017/01/20 Javascript
tablesorter.js表格排序使用方法(支持中文排序)
2017/02/10 Javascript
JavaScript实现无刷新上传预览图片功能
2017/08/02 Javascript
对angular4子路由&amp;辅助路由详解
2018/10/09 Javascript
jQuery实现高级检索功能
2019/05/28 jQuery
element-ui 中使用upload多文件上传只请求一次接口
2019/07/19 Javascript
Angular单元测试之事件触发的实现
2020/01/20 Javascript
Vue 中 template 有且只能一个 root的原因解析(源码分析)
2020/04/11 Javascript
关于Js中new操作符的作用详解
2021/02/21 Javascript
Python做简单的字符串匹配详解
2017/03/21 Python
python技能之数据导出excel的实例代码
2017/08/11 Python
13个最常用的Python深度学习库介绍
2017/10/28 Python
关于Pytorch MaxUnpool2d中size操作方式
2020/01/03 Python
基于python实现计算两组数据P值
2020/07/10 Python
结构工程个人自荐信范文
2013/11/30 职场文书
酒店管理专业自荐信
2014/05/23 职场文书
困难补助申请报告
2015/05/19 职场文书
大学开学感言
2015/08/01 职场文书