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 阴历-农历-转换类代码
Jan 16 PHP
PHP永久登录、记住我功能实现方法和安全做法
Apr 27 PHP
PHP内核探索:哈希表碰撞攻击原理
Jul 31 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
Dec 18 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
Nov 20 PHP
THINKPHP截取中文字符串函数实例代码
Mar 20 PHP
利用PHPExcel实现Excel文件的写入和读取
Apr 26 PHP
PDO::getAvailableDrivers讲解
Jan 28 PHP
PHP PDOStatement::getColumnMeta讲解
Feb 01 PHP
laravel框架使用极光推送消息操作示例
Feb 15 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
Apr 04 PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
Jun 02 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
生成缩略图
2006/10/09 PHP
php颜色转换函数hex-rgb(将十六进制格式转成十进制格式)
2013/09/23 PHP
分享3个php获取日历的函数
2015/09/25 PHP
PHP实现一个按钮点击上传多个图片操作示例
2020/01/23 PHP
用于自动添加Digg This!按钮的JavaScript
2006/12/23 Javascript
jquery对表单操作2
2011/04/06 Javascript
JQuery实现鼠标滑过显示导航下拉列表
2013/09/12 Javascript
jquery获取一个元素下面相同子元素的个数代码
2014/07/31 Javascript
使用不同的方法结合/合并两个JS数组
2014/09/18 Javascript
教你使用javascript简单写一个页面模板引擎
2015/05/05 Javascript
JavaScript实现Flash炫光波动特效
2015/05/14 Javascript
jQuery on()方法示例及jquery on()方法的优点
2015/08/27 Javascript
jQuery+css实现的蓝色水平二级导航菜单效果代码
2015/09/11 Javascript
浅析jquery unbind()方法移除元素绑定的事件
2016/05/24 Javascript
原生js FileReader对象实现图片上传本地预览效果
2020/03/27 Javascript
微信小程序日期选择器实例代码
2018/07/18 Javascript
微信小程序实现横向增长表格的方法
2018/07/24 Javascript
抖音上用记事本编写爱心小程序教程
2019/04/17 Javascript
基于JS开发微信网页录音功能的实例代码
2019/04/30 Javascript
iview form清除校验状态的实现
2019/09/19 Javascript
通过实例解析javascript Date对象属性及方法
2020/11/04 Javascript
如何解决django配置settings时遇到Could not import settings 'conf.local'
2014/11/18 Python
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
2016/07/11 Python
python中自带的三个装饰器的实现
2019/11/08 Python
tensorflow:指定gpu 限制使用量百分比,设置最小使用量的实现
2020/02/06 Python
PythonPC客户端自动化实现原理(pywinauto)
2020/05/28 Python
英国最大的汽车配件在线商店:Euro Car Parts
2019/09/30 全球购物
优秀团支部事迹材料
2014/02/08 职场文书
道德模范事迹材料
2014/12/20 职场文书
2015年秘书个人工作总结
2015/04/25 职场文书
工作失职检讨书范文
2015/05/05 职场文书
2019年个人工作总结范文
2019/03/25 职场文书
深入探讨opencv图像矫正算法实战
2021/05/21 Python
Python使用PyYAML库读写yaml文件的方法
2022/04/06 Python
idea下配置tomcat避坑详解
2022/04/12 Servers
MySQL新手入门进阶语句汇总
2022/09/23 MySQL