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执行速度全攻略
Oct 09 PHP
php+mysql写的简单留言本实例代码
Jul 25 PHP
最新的php 文件上传模型,支持多文件上传
Aug 13 PHP
浅析php插件 Simple HTML DOM 用DOM方式处理HTML
Jul 01 PHP
一个PHP的远程图片抓取函数分享
Sep 25 PHP
PHP使用GIFEncoder类处理gif图片实例
Jul 01 PHP
PHP实现ftp上传文件示例
Aug 21 PHP
php中strstr、strrchr、substr、stristr四个函数的区别总结
Sep 22 PHP
php网页版聊天软件实现代码
Aug 12 PHP
kindeditor 加入七牛云上传的实例讲解
Nov 12 PHP
PHP+redis实现的购物车单例类示例
Feb 02 PHP
Laravel框架实现抢红包功能示例
Oct 31 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
Linux下CoreSeek及PHP扩展模块的安装
2012/09/23 PHP
深入解析phpCB批量转换的代码示例
2013/06/27 PHP
基于PHP实现的事件机制实例分析
2015/06/18 PHP
如何修改Laravel中url()函数生成URL的根地址
2017/08/11 PHP
一段效率很高的for循环语句使用方法
2007/08/13 Javascript
javascript 一个自定义长度的文本自动换行的函数
2007/08/19 Javascript
用JS剩余字数计算的代码
2008/07/03 Javascript
上传的js验证(图片/文件的扩展名)
2013/04/25 Javascript
JS弹出窗口插件zDialog简单用法示例
2016/06/12 Javascript
jQuery上传多张图片带进度条样式(DEMO)
2017/03/02 Javascript
利用webstrom调试Vue.js单页面程序的方法教程
2017/06/06 Javascript
JS基于for语句编写的九九乘法表示例
2018/01/04 Javascript
js保留两位小数方法总结
2018/01/31 Javascript
JavaScript位置参数实现原理及过程解析
2020/09/14 Javascript
[03:01]完美盛典趣味短片 DOTA2年度最佳&拉胯英雄
2019/12/07 DOTA
python 根据pid杀死相应进程的方法
2017/01/16 Python
Python矩阵常见运算操作实例总结
2017/09/29 Python
python实现一行输入多个值和一行输出多个值的例子
2019/07/16 Python
Python获取统计自己的qq群成员信息的方法
2019/11/15 Python
numpy.linalg.eig() 计算矩阵特征向量方式
2019/11/29 Python
浅谈python累加求和+奇偶数求和_break_continue
2020/02/25 Python
Python 测试框架unittest和pytest的优劣
2020/09/26 Python
Python+logging输出到屏幕将log日志写入文件
2020/11/11 Python
python中Mako库实例用法
2020/12/31 Python
Python爬虫入门教程01之爬取豆瓣Top电影
2021/01/24 Python
canvas像素点操作之视频绿幕抠图
2018/09/11 HTML / CSS
英国足球店:UK Soccer Shop
2017/11/19 全球购物
.NET程序员的数据库面试题
2012/10/10 面试题
应届毕业生个人求职自荐信
2014/01/06 职场文书
回门宴答谢词
2014/01/13 职场文书
简历的自我评价
2014/02/03 职场文书
出国留学经济担保书
2014/04/01 职场文书
新郎结婚保证书
2015/02/26 职场文书
党章党规党纪学习心得体会
2016/01/14 职场文书
python tkinter模块的简单使用
2021/04/07 Python
你真的会用Mysql的explain吗
2022/03/31 MySQL