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 相关文章推荐
PHP 强制性文件下载功能的函数代码(任意文件格式)
May 26 PHP
解析php中static,const与define的使用区别
Jun 18 PHP
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
Jul 18 PHP
如何在php中正确的使用json
Aug 06 PHP
php获取网卡的MAC地址支持WIN/LINUX系统
Apr 30 PHP
PHP实现的连贯操作、链式操作实例
Jul 08 PHP
php中JSON的使用方法
Apr 30 PHP
基于PHP如何把汉字转化为拼音
Dec 11 PHP
PHP中header函数的用法及其注意事项详解
Jun 13 PHP
cakephp常见知识点汇总
Feb 24 PHP
Yii2设置默认控制器的两种方法
May 19 PHP
基于ThinkPHP删除目录及目录文件函数
Oct 28 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 FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
2014/05/04 PHP
使用PHP生成图片的缩略图的方法
2015/08/18 PHP
PHP中使用array函数新建一个数组
2015/11/19 PHP
php递归函数怎么用才有效
2018/02/24 PHP
laravel5表单唯一验证的实例代码
2019/09/30 PHP
Javascript与vbscript数据共享
2007/01/09 Javascript
JavaScript监测ActiveX控件是否已经安装过的代码
2008/09/02 Javascript
javascript 仿QQ滑动菜单效果代码
2010/09/03 Javascript
javascript中RegExp保留小数点后几位数的方法分享
2013/08/13 Javascript
js打造数组转json函数
2015/01/14 Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
2015/09/10 Javascript
每天一篇javascript学习小结(RegExp对象)
2015/11/17 Javascript
jQuery Easyui实现左右布局
2016/01/26 Javascript
AngularJS 中的事件详解
2016/07/28 Javascript
jQuery 翻页组件yunm.pager.js实现div局部刷新的思路
2016/08/11 Javascript
js html5 css俄罗斯方块游戏再现
2016/10/17 Javascript
微信小程序 chooseImage选择图片或者拍照
2017/04/07 Javascript
webpack-dev-server自动更新页面方法
2018/02/22 Javascript
基于ionic实现下拉刷新功能
2018/05/10 Javascript
javascript 高级语法之继承的基本使用方法示例
2019/11/11 Javascript
JS写滑稽笑脸运动效果
2020/05/28 Javascript
如何在postman测试用例中实现断言过程解析
2020/07/09 Javascript
解决vue-router 嵌套路由没反应的问题
2020/09/22 Javascript
JavaScript实现图片合成下载的示例
2020/11/19 Javascript
[00:35]可解锁地面特效
2018/12/20 DOTA
利用python解决mysql视图导入导出依赖的问题
2017/12/17 Python
python使用openpyxl库修改excel表格数据方法
2018/05/03 Python
python time.sleep()是睡眠线程还是进程
2019/07/09 Python
python 两个数据库postgresql对比
2019/10/21 Python
python speech模块的使用方法
2020/09/09 Python
python 实现&quot;神经衰弱&quot;翻牌游戏
2020/11/09 Python
个人求职信范文分享
2013/12/13 职场文书
教师读书活动总结
2014/05/07 职场文书
不错的求职信范文
2014/07/20 职场文书
Python Numpy之linspace用法说明
2021/04/17 Python
Win10加载疑难解答时出错发生意外错误的解决方法
2022/07/07 数码科技