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+Html+缓存
Nov 25 PHP
php基础学习之变量的使用
Jun 09 PHP
php设计模式 Singleton(单例模式)
Jun 26 PHP
PHP递归算法的详细示例分析
Feb 19 PHP
php生成EAN_13标准条形码实例
Nov 13 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
Jul 05 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
Oct 15 PHP
php与Mysql的一些简单的操作
Feb 26 PHP
PHP实现长文章分页实例代码(附源码)
Feb 03 PHP
PHP中set_include_path()函数相关用法分析
Jul 18 PHP
详解PHP处理密码的几种方式
Nov 30 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
Jun 07 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
PHP防范SQL注入的具体方法详解(测试通过)
2014/05/09 PHP
PHP获取时间排除周六、周日的两个方法
2014/06/30 PHP
php微信分享到朋友圈、QQ、朋友、微博
2019/02/18 PHP
jQuery.Validate 使用笔记(jQuery Validation范例 )
2010/06/25 Javascript
一个简单的JavaScript数据缓存系统实现代码
2010/10/24 Javascript
JavaScript数值转换的三种方式总结
2014/07/31 Javascript
html的DOM中document对象images集合用法实例
2015/01/21 Javascript
JQuery选择器、过滤器大整理
2015/05/26 Javascript
jquery.validate提示错误信息位置方法
2016/01/22 Javascript
基于JavaScript定位当前的地理位置
2017/04/11 Javascript
详解JS中的柯里化(currying)
2017/08/17 Javascript
JavaScript使用atan2来绘制箭头和曲线的实例
2017/09/14 Javascript
element-ui 设置菜单栏展开的方法
2018/08/22 Javascript
Vue + Elementui实现多标签页共存的方法
2019/06/12 Javascript
JavaScript实现移动小精灵的案例代码
2020/12/12 Javascript
python创建临时文件夹的方法
2015/07/06 Python
对IPython交互模式下的退出方法详解
2019/02/16 Python
介绍一款python类型检查工具pyright(推荐)
2019/07/03 Python
Python3中urlencode和urldecode的用法详解
2019/07/23 Python
Python+Pyqt实现简单GUI电子时钟
2021/02/22 Python
浅谈python的elementtree模块处理中文注意事项
2020/03/06 Python
python能开发游戏吗
2020/06/11 Python
如何教少儿学习Python编程
2020/07/10 Python
HTML5中判断横屏竖屏的方法(移动端)
2016/08/04 HTML / CSS
STRATHBERRY苏贝瑞包包官网:西班牙高级工匠手工打造
2020/11/10 全球购物
新郎父亲婚宴答谢词
2014/01/11 职场文书
大学生社会实践自我鉴定
2014/03/24 职场文书
董事长秘书工作职责
2014/06/10 职场文书
市场营销专业应届生自荐信
2014/06/19 职场文书
大学生学习计划书
2014/09/15 职场文书
缓刑期间思想汇报范文
2014/10/10 职场文书
社区植树节活动总结
2015/02/06 职场文书
安娜卡列尼娜观后感
2015/06/11 职场文书
springboot @ConfigurationProperties和@PropertySource的区别
2021/06/11 Java/Android
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL
使用Postman测试需要授权的接口问题
2022/06/21 Java/Android