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 相关文章推荐
我的论坛源代码(二)
Oct 09 PHP
PHP无限分类的类
Jan 02 PHP
php下防止单引号,双引号在接受页面转义的设置方法
Sep 25 PHP
php后台程序与Javascript的两种交互方式
Oct 25 PHP
浅析PHP页面局部刷新功能的实现小结
Jun 21 PHP
Codeigniter实现智能裁剪图片的方法
Jun 12 PHP
19个Android常用工具类汇总
Dec 30 PHP
PHP 实现代码复用的一个方法 traits新特性
Feb 22 PHP
php中删除数组的第一个元素和最后一个元素的函数
Mar 07 PHP
浅析php-fpm静态和动态执行方式的比较
Nov 09 PHP
PHP实现数组转JSon和JSon转数组的方法示例
Jun 14 PHP
thinkPHP框架乐观锁和悲观锁实例分析
Oct 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/01 无线电
PHP7扩展开发之基于函数方式使用lib库的方法详解
2018/01/15 PHP
laravel手动创建数组分页的实现代码
2018/06/07 PHP
一个不错的用JavaScript实现的UBB编码函数
2007/03/09 Javascript
Js如何判断客户端是PC还是手持设备简单分析
2012/11/22 Javascript
javascript类型转换使用方法
2014/02/08 Javascript
jquery库或JS文件在eclipse下报错问题解决方法
2014/04/17 Javascript
JavaScript中实现Map的示例代码
2015/09/09 Javascript
jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
2015/09/14 Javascript
jQuery实现仿美橙互联两级导航菜单效果完整实例
2015/09/17 Javascript
高效的jquery数字滚动特效
2015/12/17 Javascript
jQuery中animate的几种用法与注意事项
2016/12/12 Javascript
Nodejs之TCP服务端与客户端聊天程序详解
2017/07/07 NodeJs
node实现基于token的身份验证
2018/04/09 Javascript
JavaScript数组常用的增删改查与其他属性详解
2020/10/13 Javascript
Django 前后台的数据传递的方法
2017/08/08 Python
pygame游戏之旅 添加icon和bgm音效的方法
2018/11/21 Python
在Python文件中指定Python解释器的方法
2019/02/18 Python
Python中常用的8种字符串操作方法
2019/05/06 Python
PyQt5图形界面播放音乐的实例
2019/06/17 Python
详解python编译器和解释器的区别
2019/06/24 Python
django跳转页面传参的实现
2020/09/17 Python
Python 串口通信的实现
2020/09/29 Python
HTML5中indexedDB 数据库的使用实例
2017/05/11 HTML / CSS
html5调用app分享功能示例(WebViewJavascriptBridge)
2018/03/21 HTML / CSS
AJAX的优缺点都有什么
2015/08/18 面试题
桥梁与隧道工程专业本科生求职信
2013/10/08 职场文书
大专应届生个人简历的自我评价
2013/10/15 职场文书
餐厅总经理岗位职责
2013/12/31 职场文书
ktv筹备计划书
2014/05/03 职场文书
Nginx源码编译安装过程记录
2021/11/17 Servers
游戏《铁拳》动画化!2022年年内播出
2022/03/21 日漫
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python
一起来看看Vue的核心原理剖析
2022/03/24 Vue.js
Go并发4种方法简明讲解
2022/04/06 Golang
Golang 实现 WebSockets 之创建 WebSockets
2022/04/24 Golang