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中操作MySQL数据库的一些要注意的问题
Oct 09 PHP
安装PHP可能遇到的问题“无法载入mysql扩展” 的解决方法
Apr 16 PHP
php include的妙用,实现路径加密
Jul 29 PHP
浅析Mysql 数据回滚错误的解决方法
Aug 05 PHP
php GUID生成函数和类
Mar 10 PHP
一个严格的PHP Session会话超时时间设置方法
Jun 10 PHP
php使用post数组的键值创建同名变量并赋值的方法
Apr 03 PHP
php实现复制移动文件的方法
Jul 29 PHP
php快速排序原理与实现方法分析
May 26 PHP
php获取ajax的headers方法与内容实例
Dec 27 PHP
php快速导入大量数据的实例方法
Sep 23 PHP
PHP 对象接口简单实现方法示例
Apr 13 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
4月1日重磅发布!《星际争霸II》6.0.0版本更新
2020/04/09 星际争霸
php中截取字符串支持utf-8
2007/01/18 PHP
PHP form 表单传参明细研究
2009/07/17 PHP
判断是否为指定长度内字符串的php函数
2010/02/16 PHP
php IP转换整形(ip2long)的详解
2013/06/06 PHP
PHP读取Excel类文件
2017/05/15 PHP
用cssText批量修改样式
2009/08/29 Javascript
jquery ajax 检测用户注册时用户名是否存在
2009/11/03 Javascript
JavaScript与DOM组合动态创建表格实例
2012/12/23 Javascript
js给dropdownlist添加选项的小例子
2013/03/04 Javascript
js导出txt示例代码
2014/01/14 Javascript
JS中判断JSON数据是否存在某字段的方法
2014/03/07 Javascript
JS刷新父窗口的几种方式小结(推荐)
2016/11/09 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
2016/11/21 Javascript
JS伪继承prototype实现方法示例
2018/06/20 Javascript
JS实现关键词高亮显示正则匹配
2018/06/22 Javascript
Vue项目部署在Spring Boot出现页面空白问题的解决方案
2018/11/26 Javascript
利用Vue构造器创建Form组件的通用解决方法
2018/12/03 Javascript
Vue利用Blob下载原生二进制数组文件
2019/09/25 Javascript
vue实现路由监听和参数监听
2019/10/29 Javascript
js实现动态时钟
2020/03/12 Javascript
[00:36]DOTA2风云人物相约完美“圣”典 12月17日不见不散
2016/11/30 DOTA
[27:08]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第二场 11.21
2020/11/23 DOTA
python目录操作之python遍历文件夹后将结果存储为xml
2014/01/27 Python
Python按行读取文件的实现方法【小文件和大文件读取】
2016/09/19 Python
Python 实现删除某路径下文件及文件夹的实例讲解
2018/04/24 Python
详解Python中is和==的区别
2019/03/21 Python
python+opencv实现车牌定位功能(实例代码)
2019/12/24 Python
基于html5绘制圆形多角图案
2016/04/21 HTML / CSS
HTML5 图片悬停放大的实现代码示例
2019/12/04 HTML / CSS
绿色美容,有机护肤品和化妆品:Safe & Chic
2018/10/29 全球购物
Radley英国官网:英国莱德利小狗包
2019/03/21 全球购物
《窗前的气球》教学反思
2014/04/07 职场文书
妇联2016年六一国际儿童节活动总结
2016/04/06 职场文书
写自招自荐信的绝招!
2019/04/19 职场文书
PHP中->和=>的意思
2021/03/31 PHP