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加密解密函数(动态加密)
Jun 19 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
Oct 10 PHP
php生成excel文件的简单方法
Feb 08 PHP
ThinkPHP实现带验证码的文件上传功能实例
Nov 01 PHP
php简单实现无限分类树形列表的方法
Mar 27 PHP
PHP获取网站中各文章的第一张图片的代码示例
May 20 PHP
php求今天、昨天、明天时间戳的简单实现方法
Jul 28 PHP
PHP中new static()与new self()的比较
Aug 19 PHP
php中strtotime函数性能分析
Nov 20 PHP
Yii框架响应组件用法实例分析
Sep 04 PHP
php连接sftp的作用以及实例代码
Sep 23 PHP
PHP array_reverse() 函数原理及实例解析
Jul 14 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 function用法如何递归及return和echo区别
2014/03/07 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
2014/10/15 PHP
yii 2.0中表单小部件的使用方法示例
2017/05/23 PHP
JS 建立对象的方法
2007/04/21 Javascript
从阿里妈妈发现的几个不错的表单验证函数
2007/09/21 Javascript
Firefox outerHTML实现代码
2009/06/04 Javascript
json 入门基础教程 推荐
2009/10/31 Javascript
基于jQuery的判断iPad、iPhone、Android是横屏还是竖屏的代码
2014/05/11 Javascript
基于jQuery实现的旋转彩圈实例
2015/06/26 Javascript
js实现无缝滚动特效
2015/12/20 Javascript
JS Ajax请求如何防止重复提交
2016/06/13 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
Vue.JS入门教程之处理表单
2016/12/01 Javascript
老生常谈js中的MVC
2017/07/25 Javascript
mockjs,json-server一起搭建前端通用的数据模拟框架教程
2017/12/18 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
Python argv用法详解
2016/01/08 Python
详解Python里使用正则表达式的ASCII模式
2017/11/02 Python
详细解读tornado协程(coroutine)原理
2018/01/15 Python
Django中针对基于类的视图添加csrf_exempt实例代码
2018/02/11 Python
python定向爬取淘宝商品价格
2018/02/27 Python
解决tensorflow模型参数保存和加载的问题
2018/07/26 Python
python机器学习之KNN分类算法
2018/08/29 Python
对IPython交互模式下的退出方法详解
2019/02/16 Python
Python当中的array数组对象实例详解
2019/06/12 Python
对python中的*args与**kwgs的含义与作用详解
2019/08/28 Python
Python 实现Image和Ndarray互相转换
2020/02/19 Python
Python pandas 列转行操作详解(类似hive中explode方法)
2020/05/18 Python
如何使用html5与css3完成google涂鸦动画
2012/12/16 HTML / CSS
书香校园建设方案
2014/05/02 职场文书
慈善捐赠倡议书
2014/08/30 职场文书
干部竞争上岗演讲稿
2014/09/11 职场文书
话题作文之自信作文
2019/11/15 职场文书
初中运动会闭幕词范本3篇
2019/12/09 职场文书
上手简单,功能强大的Python爬虫框架——feapder
2021/04/27 Python
python Django框架快速入门教程(后台管理)
2021/07/21 Python