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 相关文章推荐
实现了一个PHP5的getter/setter基类的代码
Feb 25 PHP
使用PHP遍历文件目录与清除目录中文件的实现详解
Jun 24 PHP
php中url传递中文字符,特殊危险字符的解决方法
Aug 17 PHP
php实现加减法验证码代码
Feb 14 PHP
Zend Framework入门知识点小结
Mar 19 PHP
PHP中类属性与类静态变量的访问方法示例
Jul 13 PHP
Yii编程开发常见调用技巧集锦
Jul 15 PHP
php is_executable判断给定文件名是否可执行实例
Sep 26 PHP
PHP进程通信基础之信号
Feb 19 PHP
php微信开发之图片回复功能
Jun 14 PHP
Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例
Oct 12 PHP
关于laravel 子查询 &amp; join的使用
Oct 16 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
ECshop 迁移到 PHP7版本时遇到的兼容性问题
2016/02/15 PHP
PHP实现页面静态化的超简单方法
2016/09/06 PHP
JS 常用校验函数
2009/03/26 Javascript
jquery多选项卡效果实例代码(附效果图)
2013/03/23 Javascript
jtable列中自定义button示例代码
2013/11/21 Javascript
javascript进行四舍五入方法汇总
2014/12/16 Javascript
javascript+html5实现绘制圆环的方法
2015/07/28 Javascript
jQuery垂直多级导航菜单代码分享
2015/08/18 Javascript
JS实现的左侧竖向滑动菜单效果代码
2015/10/19 Javascript
Bootstrap禁用响应式布局的实现方法
2017/03/09 Javascript
js+canvas实现动态吃豆人效果
2017/03/22 Javascript
AngularJS 限定$scope的范围实例详解
2017/06/23 Javascript
web前端vue实现插值文本和输出原始html
2018/01/19 Javascript
学习Vue组件实例
2018/04/28 Javascript
vue.js绑定事件监听器示例【基于v-on事件绑定】
2018/07/07 Javascript
AngularJs中$cookies简单用法分析
2019/05/30 Javascript
Python OS模块常用函数说明
2015/05/23 Python
Python利用BeautifulSoup解析Html的方法示例
2017/07/30 Python
Python学生信息管理系统修改版
2018/03/13 Python
python3解析库pyquery的深入讲解
2018/06/26 Python
python3利用tcp实现文件夹远程传输
2018/07/28 Python
Python3.5 Pandas模块之DataFrame用法实例分析
2019/04/23 Python
python实现微信定时每天和女友发送消息
2019/04/29 Python
TensorFlow命名空间和TensorBoard图节点实例
2020/01/23 Python
python实现简单学生信息管理系统
2020/04/09 Python
Python绘制全球疫情变化地图的实例代码
2020/04/20 Python
Django多数据库联用实现方法解析
2020/11/12 Python
html5使用canvas画空心圆与实心圆
2014/12/15 HTML / CSS
Furla官网:意大利著名的皮革品牌
2019/08/06 全球购物
能否解释一下XSS cookie盗窃是什么意思
2012/06/02 面试题
平面设计的岗位职责
2013/11/08 职场文书
自荐书范文
2013/12/08 职场文书
生日寄语大全
2014/04/08 职场文书
促销活动总结报告
2014/04/26 职场文书
2015小学毕业班工作总结
2015/07/21 职场文书
mysql创建存储过程及函数详解
2021/12/04 MySQL