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和ACCESS写聊天室(十)
Oct 09 PHP
php中如何同时使用session和cookie来保存用户登录信息
Jul 05 PHP
PHP基础知识介绍
Sep 17 PHP
PHP callback函数使用方法和注意事项
Jan 23 PHP
PHP中的一些常用函数收集
May 26 PHP
CodeIgniter中使用Smarty3基本配置
Jun 29 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
Dec 09 PHP
利用PHP生成CSV文件简单示例
Dec 21 PHP
PHP进程通信基础之信号
Feb 19 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
Aug 10 PHP
Yii2框架视图(View)操作及Layout的使用方法分析
May 27 PHP
Yii框架实现对数据库的CURD操作示例
Sep 03 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
xml在joomla表单中的应用详解分享
2012/07/19 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
2017/08/31 PHP
php静态成员方法和静态的成员属性的使用方法
2017/10/26 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
2019/08/05 PHP
JavaScript URL参数读取改进版
2009/01/16 Javascript
地址栏传递中文参数乱码在js里用escape转码
2013/08/28 Javascript
JS实现两个大数(整数)相乘
2014/04/28 Javascript
利用jQuery实现可以编辑的表格
2014/05/26 Javascript
浅谈javascript 归并方法
2015/01/21 Javascript
jquery制作图片时钟特效
2020/03/30 Javascript
Bootstrap Chart组件使用教程
2016/04/28 Javascript
Vue上传组件vue Simple Uploader的用法示例
2017/08/25 Javascript
JavaScript中数组常见操作技巧
2017/09/01 Javascript
JS处理一些简单计算题
2018/02/24 Javascript
Vue.js实现可排序的表格组件功能示例
2019/02/19 Javascript
angularjs1.X 重构controller 的方法小结
2019/08/15 Javascript
关于javascript中的promise的用法和注意事项(推荐)
2021/01/15 Javascript
Python修改MP3文件的方法
2015/06/15 Python
使用rst2pdf实现将sphinx生成PDF
2016/06/07 Python
Python基于whois模块简单识别网站域名及所有者的方法
2018/04/23 Python
python实现按长宽比缩放图片
2018/06/07 Python
TensorFlow查看输入节点和输出节点名称方式
2020/01/04 Python
详解用 python-docx 创建浮动图片
2021/01/24 Python
python 统计list中各个元素出现的次数的几种方法
2021/02/20 Python
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
Tod’s英国官方网站:意大利奢华手工制作手袋和鞋履
2019/03/15 全球购物
中国好声音华少广告词
2014/03/17 职场文书
大学生就业意向书范文
2014/04/01 职场文书
对孩子的寄语
2014/04/09 职场文书
应届毕业生求职信范文
2014/05/08 职场文书
2014年党课学习心得体会
2014/07/08 职场文书
个人自我剖析材料
2014/09/30 职场文书
党的群众路线教育实践活动个人对照检查材料(企业)
2014/11/05 职场文书
淘宝好评语句大全
2014/12/31 职场文书
家装业务员岗位职责
2015/04/03 职场文书
Java基础-封装和继承
2021/07/02 Java/Android