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
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
Feb 06 PHP
VIM中设置php自动缩进为4个空格的方法详解
Jun 14 PHP
使用PHP获取当前url路径的函数以及服务器变量
Jun 29 PHP
分享下页面关键字抓取components.arrow.com站点代码
Jan 30 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
Jun 30 PHP
php中的curl_multi系列函数使用例子
Jul 29 PHP
PHP中soap的用法实例
Oct 24 PHP
WordPress的主题编写中获取头部模板和底部模板
Dec 28 PHP
PHP 5.6.11 访问SQL Server2008R2的几种情况详解
Aug 08 PHP
php执行多个存储过程的方法【基于thinkPHP】
Nov 08 PHP
thinkphp5 migrate数据库迁移工具
Feb 20 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
基于jquery的二级联动菜单实现代码
2011/04/25 Javascript
javascript变量作用域使用中常见错误总结
2013/03/26 Javascript
推荐JavaScript实现继承的最佳方式
2014/11/11 Javascript
JS实现点击按钮控制Div变宽、增高及调整背景色的方法
2015/08/05 Javascript
Bootstrap每天必学之轮播(Carousel)插件
2016/04/25 Javascript
Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面
2016/07/01 Javascript
正则表达式,替换所有HTML标签的简单实例
2016/11/28 Javascript
解析vue中的$mount
2017/12/21 Javascript
使用mint-ui实现省市区三级联动效果的示例代码
2018/02/09 Javascript
JS实现字符串去重及数组去重的方法示例
2018/04/21 Javascript
JS端基于download.js实现图片、视频时直接下载而不是打开预览
2020/05/09 Javascript
小程序实现简单语音聊天的示例代码
2020/07/24 Javascript
[03:40]DOTA2英雄梦之声_第01期_炼金术士
2014/06/23 DOTA
详细探究Python中的字典容器
2015/04/14 Python
Python中计算三角函数之cos()方法的使用简介
2015/05/15 Python
python各种语言间时间的转化实现代码
2016/03/23 Python
请不要重复犯我在学习Python和Linux系统上的错误
2016/12/12 Python
Python中音频处理库pydub的使用教程
2017/06/07 Python
基于wxPython的GUI实现输入对话框(2)
2019/02/27 Python
python实现电子书翻页小程序
2019/07/23 Python
python os.path.isfile 的使用误区详解
2019/11/29 Python
python 读写文件包含多种编码格式的解决方式
2019/12/20 Python
python模拟斗地主发牌
2020/04/22 Python
Perfumetrader荷兰:香水、化妆品和护肤品在线商店
2017/09/15 全球购物
好莱坞百老汇御用王牌美妆:Koh Gen Do 江原道
2018/04/03 全球购物
美国现代家具网站:Design Within Reach
2018/07/19 全球购物
公司营业员的工作总结自我评价
2013/10/05 职场文书
建筑文秘专业个人求职信范文
2013/12/28 职场文书
青年创业培训欢迎词
2014/01/10 职场文书
小班重阳节活动方案
2014/02/08 职场文书
干部现实表现材料
2014/02/13 职场文书
《雪地里的小画家》教学反思
2014/02/22 职场文书
加多宝凉茶广告词
2014/03/18 职场文书
需求分析说明书
2014/05/09 职场文书
2014年幼儿园德育工作总结
2014/12/17 职场文书
python3.9之你应该知道的新特性详解
2021/04/29 Python