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+mysql扎实个人基本功
Mar 27 PHP
新手菜鸟必读:session与cookie的区别
Aug 22 PHP
ThinkPHP应用模式扩展详解
Jul 16 PHP
自己写的php curl库实现整站克隆功能
Feb 12 PHP
php输入数据统一类实例
Feb 23 PHP
PHP浮点数精度问题汇总
May 13 PHP
Joomla简单判断用户是否登录的方法
May 04 PHP
PHP面向对象程序设计OOP继承用法入门示例
Dec 27 PHP
PHP和MYSQL实现分页导航思路详解
Apr 11 PHP
PHP实现获取第一个中文首字母并进行排序的方法
May 09 PHP
php文件操作之文件写入字符串、数组的方法分析
Apr 15 PHP
使用php的mail()函数实现发送邮件功能
Jun 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
Php Mssql操作简单封装支持存储过程
2009/12/11 PHP
调试PHP程序的多种方法介绍
2014/11/06 PHP
Symfony2框架学习笔记之表单用法详解
2016/03/18 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
ExtJS PropertyGrid中使用Combobox选择值问题
2010/06/13 Javascript
js猜数字小游戏的简单实现代码
2013/07/02 Javascript
js函数获取html中className所在的内容并去除标签
2013/09/08 Javascript
javascript使用shift+click实现选择和反选checkbox的方法
2015/05/04 Javascript
Javascript实现的简单右键菜单类
2015/09/23 Javascript
详解使用fetch发送post请求时的参数处理
2017/04/05 Javascript
vue2.0 父组件给子组件传递数据的方法
2018/01/15 Javascript
原生js实现拖拽功能基本思路详解
2018/04/18 Javascript
vue 修改 data 数据问题并实时显示的方法
2018/08/27 Javascript
[37:29]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.19
2020/11/19 DOTA
教你如何在Django 1.6中正确使用 Signal
2014/06/22 Python
Python新手在作用域方面经常容易碰到的问题
2015/04/03 Python
Python备份目录及目录下的全部内容的实现方法
2016/06/12 Python
Python使用poplib模块和smtplib模块收发电子邮件的教程
2016/07/02 Python
python 读取txt中每行数据,并且保存到excel中的实例
2018/04/29 Python
python机器学习之KNN分类算法
2018/08/29 Python
Python 字符串换行的多种方式
2018/09/06 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
2018/12/20 Python
pandas 数据索引与选取的实现方法
2019/06/21 Python
pandas计算最大连续间隔的方法
2019/07/04 Python
Python CVXOPT模块安装及使用解析
2019/08/01 Python
python统计字符串中字母出现次数代码实例
2020/03/02 Python
ABOUT YOU匈牙利:500个最受欢迎的时尚品牌
2019/07/19 全球购物
《蓝色的树叶》教学反思
2014/02/24 职场文书
班级旅游计划书
2014/05/03 职场文书
企业金融服务方案
2014/06/03 职场文书
民事诉讼代理授权委托书
2014/10/11 职场文书
质检员岗位职责
2015/02/03 职场文书
通知范文怎么写
2015/04/16 职场文书
党员干部公开承诺书范文
2015/04/27 职场文书
投资申请报告
2015/05/19 职场文书
六年级情感作文之500字
2019/10/23 职场文书