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的知识
Nov 17 PHP
php排序算法(冒泡排序,快速排序)
Oct 09 PHP
基于PHP文件操作的详细诠释
Jun 21 PHP
php通过记录IP来防止表单重复提交方法分析
Dec 16 PHP
php导入模块文件分享
Mar 17 PHP
前端必学之PHP语法基础
Jan 01 PHP
PHP使用fopen与file_get_contents读取文件实例分享
Mar 04 PHP
深入剖析浏览器退出之后php还会继续执行么
May 17 PHP
PHP多线程模拟实现秒杀抢单
Feb 07 PHP
对php 判断http还是https,以及获得当前url的方法详解
Jan 15 PHP
PHP中数组转换为SimpleXML教程
Jan 27 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
Aug 30 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
咖啡豆的最常见发酵处理方法,详细了解一下
2021/03/03 冲泡冲煮
PHP利用COM对象访问SQLServer、Access
2006/10/09 PHP
PHP通过串口实现发送短信
2015/07/08 PHP
PHP页面间传递值和保持值的方法
2016/08/24 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
深入理解JavaScript系列(13) This? Yes,this!
2012/01/18 Javascript
js实现的map方法示例代码
2014/01/13 Javascript
js判断当前浏览器类型,判断IE浏览器方法
2014/06/02 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
2014/08/12 Javascript
javascript中基本类型和引用类型的区别分析
2015/05/12 Javascript
JS实现自定义简单网页软键盘效果代码
2015/11/05 Javascript
轻松学习jQuery插件EasyUI EasyUI表单验证
2015/12/01 Javascript
jQuery的内容过滤选择器学习教程
2016/04/18 Javascript
全面解析多种Bootstrap图片轮播效果
2016/05/27 Javascript
完美实现八种js焦点轮播图(下篇)
2020/04/20 Javascript
js给table赋值的实例代码
2016/10/13 Javascript
十大 Node.js 的 Web 框架(快速提升工作效率)
2017/06/30 Javascript
微信小程序实现左侧滑栏过程解析
2019/08/26 Javascript
基于vue与element实现创建试卷相关功能(实例代码)
2020/12/07 Vue.js
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
2016/07/12 Python
Python3编码问题 Unicode utf-8 bytes互转方法
2018/10/26 Python
Python数据可视化:饼状图的实例讲解
2019/12/07 Python
Pytorch 神经网络—自定义数据集上实现教程
2020/01/07 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
2020/02/25 Python
印度化妆品购物网站:Nykaa
2018/07/22 全球购物
网络体系结构及协议的定义
2014/03/13 面试题
文员自我评价怎么写
2013/09/19 职场文书
承认错误的检讨书
2014/01/30 职场文书
决心书范文
2014/03/11 职场文书
教师年度考核评语
2014/04/28 职场文书
2014光棍节单身联谊活动策划书
2014/10/10 职场文书
民事和解协议书格式
2014/11/29 职场文书
初中差生评语
2014/12/29 职场文书
告知书格式
2015/07/01 职场文书
四年级作文之说明文作文
2019/10/14 职场文书
vue实现可拖拽的dialog弹框
2021/05/13 Vue.js