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 相关文章推荐
怎样在UNIX系统下安装php3
Oct 09 PHP
php 正则 过滤html 的超链接
Jun 02 PHP
PHP Session_Regenerate_ID函数双释放内存破坏漏洞
Jan 27 PHP
php array_push()数组函数:将一个或多个单元压入数组的末尾(入栈)
Jul 12 PHP
解析php中session的实现原理以及大网站应用应注意的问题
Jun 17 PHP
php实现给一张图片加上水印效果
Jan 02 PHP
php实现和c#一致的DES加密解密实例
Jul 24 PHP
PHP实现腾讯与百度坐标转换
Aug 05 PHP
php实现与python进行socket通信的方法示例
Aug 30 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
Jun 13 PHP
详解json在php中的应用
Sep 30 PHP
php中用unset销毁变量并释放内存
May 10 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多态的实现详解
2013/06/09 PHP
判断php数组是否为索引数组的实现方法
2013/06/13 PHP
浅谈PHP链表数据结构(单链表)
2016/06/08 PHP
javascript的事件描述
2006/09/08 Javascript
根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
2007/02/22 Javascript
CSS(js)限制页面显示的文本字符长度
2012/12/27 Javascript
jQuery实现单行文字间歇向上滚动源代码
2013/06/02 Javascript
Javascript单元测试框架QUnitjs详细介绍
2014/05/08 Javascript
JS使用oumousemove和oumouseout动态改变图片显示的方法
2015/03/31 Javascript
javascript实现列表滚动的方法
2015/07/30 Javascript
使用jquery.qrcode.js生成二维码插件
2016/10/17 Javascript
JS实现淡入淡出图片效果的方法分析
2016/12/20 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
2017/02/21 Javascript
微信小程序三级联动地址选择器的实例代码
2017/07/12 Javascript
基于Vue制作组织架构树组件
2017/12/06 Javascript
webpack打包js的方法
2018/03/12 Javascript
解决vue的变量在settimeout内部效果失效的问题
2018/08/30 Javascript
vue实现侧边栏导航效果
2019/10/21 Javascript
基于canvas实现手写签名(vue)
2020/05/21 Javascript
vue祖孙组件之间的数据传递案例
2020/12/07 Vue.js
python单线程实现多个定时器示例
2014/03/30 Python
用Python写脚本,实现完全备份和增量备份的示例
2018/04/29 Python
django中静态文件配置static的方法
2018/05/20 Python
PyTorch: 梯度下降及反向传播的实例详解
2019/08/20 Python
python的mysql数据库建立表与插入数据操作示例
2019/09/30 Python
keras模型可视化,层可视化及kernel可视化实例
2020/01/24 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
mysql有关权限的表都有哪几个
2015/04/22 面试题
临床医师专业个人自我评价范文
2013/11/07 职场文书
路政管理专业推荐信
2013/11/11 职场文书
写好自荐信的几个要点
2013/12/26 职场文书
对标管理实施方案
2014/03/12 职场文书
老师对学生的评语
2014/04/18 职场文书
小学三八妇女节活动总结
2015/02/06 职场文书
Matlab求解数组中的最大值及它所在的具体位置
2021/04/16 Python
PostgreSQL自动更新时间戳实例代码
2021/11/27 PostgreSQL