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 相关文章推荐
编译问题
Oct 09 PHP
php 备份数据库代码(生成word,excel,json,xml,sql)
Jun 23 PHP
PHP中几个可以提高运行效率的代码写法、技巧分享
Aug 21 PHP
php去除头尾空格的2种方法
Mar 16 PHP
PHP下载远程文件到本地存储的方法
Mar 24 PHP
PHP实现二维数组根据key进行排序的方法
Dec 30 PHP
关于php 高并发解决的一点思路
Apr 16 PHP
PHP实现负载均衡的加权轮询方法分析
Aug 22 PHP
PHP实现小程序批量通知推送
Nov 27 PHP
Thinkphp 框架扩展之类库扩展操作详解
Apr 23 PHP
微信小程序和php的登录实现
Apr 01 PHP
php 文件上传至OSS及删除远程阿里云OSS文件
Jul 04 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禁止浏览器使用缓存页面的方法
2014/11/07 PHP
将PHP的session数据存储到数据库中的代码实例
2016/06/24 PHP
PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前台页面)
2017/06/16 PHP
Yii2.0实现生成二维码功能实例
2017/10/24 PHP
PHP利用DWZ.CN服务生成短网址
2019/08/11 PHP
用javascript实现在小方框中浏览大图的代码
2007/08/14 Javascript
基于jquery实现漂亮的动态信息提示效果
2011/08/02 Javascript
js之事件冒泡和事件捕获详细介绍
2013/10/28 Javascript
非常漂亮的JS+CSS图片幻灯切换特效
2013/11/20 Javascript
在firefox和Chrome下关闭浏览器窗口无效的解决方法
2014/01/16 Javascript
JS自定义对象实现Java中Map对象功能的方法
2015/01/20 Javascript
JavaScript中原型和原型链详解
2015/02/11 Javascript
jQuery中hover与mouseover和mouseout的区别分析
2015/12/24 Javascript
详解JavaScript中this关键字的用法
2016/05/26 Javascript
JS动态给对象添加事件的简单方法
2016/07/19 Javascript
微信小程序 MD5加密登录密码详解及实例代码
2017/01/12 Javascript
vue动态生成dom并且自动绑定事件
2017/04/19 Javascript
Angular 4依赖注入学习教程之ValueProvider的使用(七)
2017/06/04 Javascript
vue.js如何更改默认端口号8080为指定端口的方法
2017/07/14 Javascript
vue项目初始化到登录login页面的示例
2019/10/31 Javascript
解决VUEX的mapState/...mapState等取值问题
2020/07/24 Javascript
解决vue动态路由异步加载import组件,加载不到module的问题
2020/07/26 Javascript
js实现飞机大战游戏
2020/08/26 Javascript
[01:09]DOTA2次级职业联赛 - 99战队宣传片
2014/12/01 DOTA
python文件与目录操作实例详解
2016/02/22 Python
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
2019/05/16 Python
Python实现制度转换(货币,温度,长度)
2019/07/14 Python
python使用flask与js进行前后台交互的例子
2019/07/19 Python
详解Python Opencv和PIL读取图像文件的差别
2019/12/27 Python
Python extract及contains方法代码实例
2020/09/11 Python
HTML5中新标签和常用标签详解
2014/03/07 HTML / CSS
Shopee新加坡:东南亚与台湾电商平台
2019/01/25 全球购物
英国美发和美容产品商城:HQhair
2019/02/08 全球购物
“六查”、“三学”、“三干”查摆问题整改措施
2014/09/27 职场文书
大学生毕业个人总结
2015/02/15 职场文书
深入解析NumPy中的Broadcasting广播机制
2021/05/30 Python