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实现与ASP Banner组件相似的类
Oct 09 PHP
php设计模式 Adapter(适配器模式)
Jun 26 PHP
php检测数组长度函数sizeof与count用法
Nov 17 PHP
一款简单实用的php操作mysql数据库类
Dec 08 PHP
php+ajax实时输入自动搜索匹配的方法
Dec 26 PHP
symfony表单与页面实现技巧
Jan 26 PHP
PHP+Mysql+jQuery中国地图区域数据统计实例讲解
Oct 10 PHP
前端必学之PHP语法基础
Jan 01 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
Feb 04 PHP
php计算给定日期所在周的开始日期和结束日期示例
Feb 06 PHP
Yii框架学习笔记之session与cookie简单操作示例
Apr 30 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
Dec 31 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实现session自定义会话处理器的方法
2015/01/27 PHP
php实现上传图片保存到数据库的方法
2015/02/11 PHP
PHP批量去除BOM头代码分享
2015/06/26 PHP
php使用Jpgraph创建折线图效果示例
2017/02/15 PHP
JavaScript 学习笔记(五)
2009/12/31 Javascript
了解jQuery技巧来提高你的代码(个人觉得那个jquery的手册很不错)
2012/02/10 Javascript
基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
2013/05/07 Javascript
javascript 闭包详解
2015/07/02 Javascript
jQuery移动端日期(datedropper)和时间(timedropper)选择器附源码下载
2016/04/19 Javascript
HTML5+jQuery实现搜索智能匹配功能
2017/03/24 jQuery
ES6 系列之 Generator 的自动执行的方法示例
2018/10/19 Javascript
node事件循环和process模块实例分析
2020/02/14 Javascript
微信小程序订阅消息(java后端实现)开发
2020/06/01 Javascript
详解Vue+elementUI build打包部署后字体图标丢失问题
2020/07/13 Javascript
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
2016/06/13 Python
简单谈谈python中的Queue与多进程
2016/08/25 Python
关于Python中Inf与Nan的判断问题详解
2017/02/08 Python
python使用super()出现错误解决办法
2017/08/14 Python
Selenium元素的常用操作方法分析
2018/08/10 Python
基于python判断目录或者文件代码实例
2019/11/29 Python
python中导入 train_test_split提示错误的解决
2020/06/19 Python
浅谈matplotlib 绘制梯度下降求解过程
2020/07/12 Python
Django model class Meta原理解析
2020/11/14 Python
Europcar英国:英国汽车和货车租赁
2017/01/21 全球购物
Sunglasses Shop德国站:欧洲排名第一的太阳镜网站
2017/08/01 全球购物
尼克松手表官网:Nixon手表
2019/03/17 全球购物
PHP如何去执行一个SQL语句
2016/03/05 面试题
师范应届生求职信
2013/11/15 职场文书
医药代表个人的求职信分享
2013/12/08 职场文书
《少年王冕》教学反思
2014/04/11 职场文书
七一讲话心得体会
2014/09/05 职场文书
新闻稿标题
2015/07/18 职场文书
煤矿施工安全协议书
2016/03/22 职场文书
劳动合同变更协议书范本
2019/04/18 职场文书
导游词之沈阳植物园
2019/11/30 职场文书
Python可视化学习之matplotlib内置单颜色
2022/02/24 Python