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 相关文章推荐
NOT NULL 和NULL
Jan 15 PHP
PHP 身份验证方面的函数
Oct 11 PHP
深入PHP运行环境配置的详解
Jun 04 PHP
检测codeigniter脚本消耗内存情况的方法
Mar 21 PHP
PHP使用递归生成文章树
Apr 21 PHP
详解php中反射的应用
Mar 15 PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
Sep 23 PHP
PHP防止图片盗用(盗链)的方法小结
Nov 11 PHP
PHP图片水印类的封装
Jul 06 PHP
PHP聊天室简单实现方法详解
Dec 08 PHP
laravel邮件发送的实现代码示例
Jan 31 PHP
PHP设计模式之迭代器模式Iterator实例分析【对象行为型】
Apr 26 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
2006/12/14 PHP
zf框架的Filter过滤器使用示例
2014/03/13 PHP
关于php 高并发解决的一点思路
2017/04/16 PHP
让Laravel API永远返回JSON格式响应的方法示例
2018/09/05 PHP
在Laravel 中实现是否关注的示例
2019/10/22 PHP
Javascript优化技巧(文件瘦身篇)
2008/01/28 Javascript
js post方式传递提交的实现代码
2010/05/31 Javascript
jquery和javascript中如何将一元素的内容赋给另一元素
2014/01/09 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
JS实现简单的键盘打字的效果
2015/04/24 Javascript
JQuery fileupload插件实现文件上传功能
2016/03/18 Javascript
SelecT下拉框选中和取值的解决方法
2016/11/22 Javascript
详解AngularJs HTTP响应拦截器实现登陆、权限校验
2017/04/11 Javascript
jsTree事件和交互以及插件plugins详解
2017/08/29 Javascript
浅谈Emergence.js 检测元素可见性的 js 插件
2017/11/18 Javascript
Layui多选只有最后一个值的解决方法
2019/09/02 Javascript
vue实现节点增删改功能
2019/09/26 Javascript
AngularJS动态生成select下拉框的方法实例
2019/11/17 Javascript
vuecli项目构建SSR服务端渲染的实现
2020/10/30 Javascript
[02:03]《现实生活中的DOTA2》—林书豪&DOTA2职业选手出演短片
2015/08/18 DOTA
[26:50]2018完美盛典DOTA2表演赛
2018/12/17 DOTA
Python使用scrapy采集时伪装成HTTP/1.1的方法
2015/04/08 Python
Python数据结构之栈、队列的实现代码分享
2017/12/04 Python
Python排序搜索基本算法之插入排序实例分析
2017/12/11 Python
python3+mysql查询数据并通过邮件群发excel附件
2018/02/24 Python
Django 浅谈根据配置生成SQL语句的问题
2018/05/29 Python
对Python中TKinter模块中的Label组件实例详解
2019/06/14 Python
python 执行终端/控制台命令的例子
2019/07/12 Python
python进程间通信Queue工作过程详解
2019/11/01 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
2020/10/16 Python
Python 中Operator模块的使用
2021/01/30 Python
最美乡村医生事迹材料
2014/06/02 职场文书
优秀团员事迹材料1500字
2014/08/31 职场文书
2019餐饮行业创业计划书!
2019/06/27 职场文书
分享MySQL常用 内核 Debug 几种常见方法
2022/03/17 MySQL
CentOS安装Nginx并部署vue
2022/04/12 Servers