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获取网卡地址的代码
Apr 09 PHP
php cookies中删除的一般赋值方法
May 07 PHP
国外PHP程序员的13个好习惯小结
Feb 20 PHP
PHP采用get获取url汉字出现乱码的解决方法
Nov 13 PHP
CentOS6.5 编译安装lnmp环境
Dec 21 PHP
php简单判断两个字符串是否相等的方法
Jul 13 PHP
php根据日期或时间戳获取星座信息和生肖等信息
Oct 20 PHP
基于PHP如何把汉字转化为拼音
Dec 11 PHP
php fread读取文件注意事项
Sep 24 PHP
简单解决微信文章图片防盗链问题
Dec 17 PHP
对laravel的session获取与存取方法详解
Oct 08 PHP
PHP实现简易图形计算器
Aug 28 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简单对象与数组的转换函数代码(php多层数组和对象的转换)
2011/05/18 PHP
php 启动时报错的简单解决方法
2014/01/27 PHP
PHP使用strtotime计算两个给定日期之间天数的方法
2015/03/18 PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
2016/05/13 PHP
thinkPHP订单数字提醒功能的实现方法
2016/12/01 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
HTML中Select不用Disabled实现ReadOnly的效果
2008/04/07 Javascript
javascript动画浅析
2012/08/30 Javascript
js中通过split函数分割字符串成数组小例子
2013/09/21 Javascript
ExtJS4中的requires使用方法示例介绍
2013/12/03 Javascript
用jquery实现的一个超级简单的下拉菜单
2014/05/18 Javascript
jQuery简单实现页面元素置顶时悬浮效果示例
2016/08/01 Javascript
详解React-Todos入门例子
2016/11/08 Javascript
基于JavaScript实现自定义滚动条
2017/01/25 Javascript
详解如何使用Vue2做服务端渲染
2017/03/29 Javascript
使用jQuery实现鼠标点击左右按钮滑动切换
2017/08/04 jQuery
Vue项目从webpack3.x升级webpack4不完全指南
2019/04/28 Javascript
vue项目中使用eslint+prettier规范与检查代码的方法
2020/01/16 Javascript
[57:22]完美世界DOTA2联赛PWL S2 FTD vs PXG 第二场 11.27
2020/12/01 DOTA
python xml.etree.ElementTree遍历xml所有节点实例详解
2016/12/04 Python
Django model 中设置联合约束和联合索引的方法
2019/08/06 Python
关于Python3 类方法、静态方法新解
2019/08/30 Python
python中如何实现将数据分成训练集与测试集的方法
2019/09/13 Python
python zip()函数使用方法解析
2019/10/31 Python
利用python实现冒泡排序算法实例代码
2019/12/01 Python
详解Python修复遥感影像条带的两种方式
2020/02/23 Python
HTML5实现获取地理位置信息并定位功能
2015/04/25 HTML / CSS
阿联酋优惠券服务:Living Kool
2019/12/12 全球购物
瑞士首家网上药店折扣店:McDrogerie
2020/12/22 全球购物
电子商务专业毕业生工作推荐信
2013/11/17 职场文书
禁毒宣传活动总结
2014/08/26 职场文书
邮政竞聘演讲稿
2014/09/03 职场文书
街道务虚会发言材料
2014/10/20 职场文书
初中学生操行评语
2014/12/26 职场文书
语文复习计划
2015/01/19 职场文书
仓管员岗位职责范本
2015/04/01 职场文书