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的一个完整SMTP类(解决邮件服务器需要验证时的问题)
Oct 09 PHP
PHP MSSQL 存储过程的方法
Dec 24 PHP
PHP中文件上传的一个问题
Sep 04 PHP
php模板中出现空行解决方法
Mar 08 PHP
php中根据变量的类型 选择echo或dump
Jul 05 PHP
浅谈PHP与C#的值类型指向区别的详解
May 21 PHP
解析PHP中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思
Jun 28 PHP
浅谈PHP调用Webservice思路及源码分享
Jun 04 PHP
php使用pdo连接并查询sql数据库的方法
Dec 24 PHP
十幅图告诉你什么是PHP引用
Feb 22 PHP
Laravel Eloquent ORM 多条件查询的例子
Oct 10 PHP
浅谈Laravel中使用Slack进行异常通知
May 29 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中使用crypt()实现用户身份验证的代码
2012/09/05 PHP
php禁用函数设置及查看方法详解
2016/07/25 PHP
iOS10推送通知开发教程
2016/09/19 PHP
PHP实现网站访问量计数器
2017/10/27 PHP
Laravel模型间关系设置分表的方法示例
2018/04/21 PHP
深入浅析安装PhpStorm并激活的步骤详解
2020/09/17 PHP
mouse_on_title.js
2006/08/25 Javascript
javascript iframe内的函数调用实现方法
2009/07/19 Javascript
js 绑定带参数的事件以及手动触发事件
2010/04/27 Javascript
鼠标滚轮改变图片大小的示例代码
2013/11/20 Javascript
js+css实现tab菜单切换效果的方法
2015/01/20 Javascript
jQuery创建自定义的选择器用以选择高度大于100的超链接实例
2015/03/18 Javascript
[原创]JavaScript语法高亮插件highlight.js用法详解【附highlight.js本站下载】
2016/11/01 Javascript
jQuery Validate设置onkeyup验证的实例代码
2016/12/09 Javascript
angular+bootstrap的双向数据绑定实例
2017/03/03 Javascript
微信小程序实战之自定义抽屉菜单(7)
2017/04/18 Javascript
vue2.0 中#$emit,$on的使用详解
2017/06/07 Javascript
JQuery常用选择器功能与用法实例分析
2019/12/23 jQuery
Javascript查看大图功能代码实现
2020/05/07 Javascript
解决vue axios跨域 Request Method: OPTIONS问题(预检请求)
2020/08/14 Javascript
jquery实现广告上下滚动效果
2021/03/04 jQuery
[02:45]DOTA2英雄敌法师基础教程
2013/11/25 DOTA
python求列表交集的方法汇总
2014/11/10 Python
Pycharm学习教程(4) Python解释器的相关配置
2017/05/03 Python
python实现mask矩阵示例(根据列表所给元素)
2020/07/30 Python
解决PDF 转图片时丢文字的一种可能方式
2021/03/04 Python
国际经济贸易专业推荐信
2013/11/06 职场文书
个人生活学习自我评价范文
2013/11/26 职场文书
银行领导证婚词
2014/01/11 职场文书
雪山饭庄的创业计划书范文
2014/01/18 职场文书
王老吉广告词
2014/03/20 职场文书
《画风》教学反思
2014/04/16 职场文书
党校学习个人总结
2015/02/15 职场文书
2016年十一促销广告语
2016/01/28 职场文书
JS ES6异步解决方案
2021/04/29 Javascript
Java9新特性之Module模块化编程示例演绎
2022/03/16 Java/Android