php不用内置函数对数组排序的两个算法代码


Posted in PHP onFebruary 08, 2010

一朋友找工作遇到的试题,备注一下。
极有可能今后我也会遇到的。
问题:php不用内置函数对数组排序,可能是降序或者升序
第一种方法:传说中的冒泡法

function arraysort($data, $order = 'asc') { 
//asc升序 desc降序 
$temp = array (); 
$count = count ( $data ); 
if ($count <= 0) 
return false; //传入的数据不正确 
if ($order == 'asc') { 
for($i = 0; $i < $count; $i ++) { 
for($j = $count - 1; $j > $i; $j --) { 
if ($data [$j] < $data [$j - 1]) { 
//交换两个数据的位置 
$temp = $data [$j]; 
$data [$j] = $data [$j - 1]; 
$data [$j - 1] = $temp; 
} 
} 
} 
} else { 
for($i = 0; $i < $count; $i ++) { 
for($j = $count - 1; $j > $i; $j --) { 
if ($data [$j] > $data [$j - 1]) { 
$temp = $data [$j]; 
$data [$j] = $data [$j - 1]; 
$data [$j - 1] = $temp; 
} 
} 
} 
} 
return $data; 
} 
$data = array (7, 5, 3, 8, 9, 1, 5, 3, 1, 24, 3, 87, 0, 33, 1, 12, 34, 54, 66, 32 ); 
var_dump ( arraysort ( $data ) ); //升序 
echo ('<br>'); 
var_dump ( arraysort ( $data ,'desc') );//降序

第二种方法:不知道取个什么名字好,就叫插入法吧!?
function arraysort3($data, $order = 'asc') { 
//目前只做升序排列 
$count = count ( $data ); 
for($i = 1; $i < $count; $i ++) { 
$temp = $data [$i]; 
$j = $i - 1; 
while ( $data [$j] > $temp ) { 
$data [$j + 1] = $data [$j]; 
$data [$j] = $temp; 
$j --;//为什么要递减:从高位逐位判断 
} 
} 
return $data; 
} 
$data = array (7, 5, 3, 8, 9, 1, 5, 3, 1, 24, 3, 87, 0, 33, 1, 12, 34, 54, 66, 32 ); 
var_dump ( arraysort3 ( $data ) ); //升序
PHP 相关文章推荐
PHP怎样调用MSSQL的存储过程
Oct 09 PHP
修改PHP的memory_limit限制的方法分享
Feb 21 PHP
sql注入与转义的php函数代码
Jun 17 PHP
php_screw 1.5:php加密: 安装与使用详解
Jun 20 PHP
php实现最简单的MVC框架实例教程
Sep 08 PHP
php三元运算符知识汇总
Jul 02 PHP
fsockopen pfsockopen函数被禁用,SMTP发送邮件不正常的解决方法
Sep 20 PHP
PHP简单获取及判断提交来源的方法
Apr 22 PHP
基于PHP实现数据分页显示功能
May 26 PHP
JS+PHP实现用户输入数字后显示最大的值及所在位置
Jun 19 PHP
使用PHP反射机制来构造&quot;CREATE TABLE&quot;的sql语句
Mar 21 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
Oct 30 PHP
Linux下将excel数据导入到mssql数据库中的方法
Feb 08 #PHP
PHPWind 发帖回帖Api PHP版打包下载
Feb 08 #PHP
php cli 方式 在crotab中运行解决
Feb 08 #PHP
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
Feb 08 #PHP
Zend framework处理一个http请求的流程分析
Feb 08 #PHP
PHP函数常用用法小结
Feb 08 #PHP
在PHP中养成7个面向对象的好习惯
Jan 28 #PHP
You might like
Apache 配置详解(最好的APACHE配置教程)
2010/07/04 PHP
destoon二次开发入门示例
2014/06/20 PHP
php中JSON的使用方法
2015/04/30 PHP
PHP超全局数组(Superglobals)介绍
2015/07/01 PHP
PHP进程通信基础之信号
2017/02/19 PHP
javascript 单选框,多选框美化代码
2008/08/01 Javascript
jquery tools之tooltip
2009/07/25 Javascript
浅谈javascript 面向对象编程
2009/10/28 Javascript
基于jQuery的倒计时插件代码
2011/05/07 Javascript
JS控制图片等比例缩放的示例代码
2013/12/24 Javascript
jquery获取一个元素下面相同子元素的个数代码
2014/07/31 Javascript
详解Bootstrap按钮
2016/01/04 Javascript
利用JavaScript实现拖拽改变元素大小
2016/12/14 Javascript
浅谈vue的props,data,computed变化对组件更新的影响
2018/01/16 Javascript
Less 安装及基本用法
2018/05/05 Javascript
JS/jQuery实现简单的开关灯效果【案例】
2019/02/19 jQuery
layui使用数据表格实现购物车功能
2019/07/26 Javascript
JS使用H5实现图片预览功能
2019/09/30 Javascript
python解析中国天气网的天气数据
2014/03/21 Python
python实现简单温度转换的方法
2015/03/13 Python
Python中的filter()函数的用法
2015/04/27 Python
Python实现扣除个人税后的工资计算器示例
2018/03/26 Python
基于anaconda下强大的conda命令介绍
2018/06/11 Python
python requests 库请求带有文件参数的接口实例
2019/01/03 Python
使用TensorFlow实现简单线性回归模型
2019/07/19 Python
python 异步async库的使用说明
2020/05/04 Python
keras小技巧——获取某一个网络层的输出方式
2020/05/23 Python
俄罗斯香水和化妆品购物网站:Л’Этуаль
2018/05/10 全球购物
医生实习工作总结的自我评价
2013/09/27 职场文书
宿舍违规用电检讨书
2014/02/16 职场文书
语文教研活动总结
2014/07/02 职场文书
2014年信贷员工作总结
2014/11/18 职场文书
公司庆典欢迎词
2015/01/26 职场文书
创卫工作总结2015
2015/04/22 职场文书
导游词之镇江焦山
2019/11/21 职场文书
教你怎么用python爬取爱奇艺热门电影
2021/05/20 Python