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以post形式发送xml的方法
Nov 04 PHP
php模仿asp Application对象在线人数统计实现方法
Jan 04 PHP
php使用cookie保存用户登录的用户名实例
Jan 26 PHP
PHP CodeIgniter框架的工作原理研究
Mar 30 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
Dec 02 PHP
详解在PHP的Yii框架中使用行为Behaviors的方法
Mar 18 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
Jun 13 PHP
thinkphp项目如何自定义微信分享描述内容
Feb 20 PHP
PHP基于curl post实现发送url及相关中文乱码问题解决方法
Nov 25 PHP
PHP中OpenSSL加密问题整理
Dec 14 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
Mar 31 PHP
PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析
Dec 12 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获取搜索引擎关键字来源的函数(支持百度和谷歌等搜索引擎)
2012/10/03 PHP
Symfony2中被遗弃的getRequest()方法分析
2016/03/17 PHP
PHP编译configure时常见错误的总结
2017/08/17 PHP
javascript StringBuilder类实现
2008/12/22 Javascript
精心挑选的15款优秀jQuery 本特效插件和教程
2012/08/06 Javascript
js实现的GridView即表头固定表体有滚动条且可滚动
2014/02/19 Javascript
jQuery函数的第二个参数获取指定上下文中的DOM元素
2014/05/19 Javascript
使用nodejs、Python写的一个简易HTTP静态文件服务器
2014/07/18 NodeJs
js实现表单多按钮提交action的处理方法
2015/10/24 Javascript
Laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的解决方法
2016/08/18 Javascript
详解用vue.js和laravel实现微信授权登陆
2017/06/23 Javascript
AngularJS实现表格的增删改查(仅限前端)
2017/07/04 Javascript
jQuery Form插件使用详解_动力节点Java学院整理
2017/07/17 jQuery
jQuery进阶实践之利用最优雅的方式如何写ajax请求
2017/12/20 jQuery
JavaScript实现的DOM绘制柱状图效果示例
2018/08/08 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【凹多边形的分离轴检测算法】
2018/12/13 Javascript
微信小程序如何刷新当前界面的实现方法
2019/06/07 Javascript
利用JS代码自动删除稿件的普通弹幕功能
2019/09/20 Javascript
JavaScript实现tab栏切换效果
2020/03/16 Javascript
python文件读写操作与linux shell变量命令交互执行的方法
2015/01/14 Python
Python实现统计代码行的方法分析
2017/07/12 Python
python数据结构链表之单向链表(实例讲解)
2017/07/25 Python
pandas的object对象转时间对象的方法
2018/04/11 Python
Django 路由系统URLconf的使用
2018/10/11 Python
Python 实现某个功能每隔一段时间被执行一次的功能方法
2018/10/14 Python
python 从文件夹抽取图片另存的方法
2018/12/04 Python
python实现dijkstra最短路由算法
2019/01/17 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
2019/11/11 Python
Pycharm新手使用教程(图文详解)
2020/09/17 Python
python 解决函数返回return的问题
2020/12/05 Python
爱牙日活动总结
2014/08/29 职场文书
学雷锋活动倡议书
2014/08/30 职场文书
教师节表彰会主持词
2015/07/06 职场文书
2016入党积极分子心得体会
2016/01/06 职场文书
导游词之山西祁县乔家大院
2019/10/14 职场文书
MYSQL(电话号码,身份证)数据脱敏的实现
2021/05/28 MySQL