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 相关文章推荐
excellent!――ASCII Art(由目标图象生成ascii)
Feb 20 PHP
PHP 简易输出CSV表格文件的方法详解
Jun 20 PHP
php实现memcache缓存示例讲解
Dec 04 PHP
php防止sql注入代码实例
Dec 18 PHP
PHP计算一年多少个星期和每周的开始和结束日期
Jul 01 PHP
php中用memcached实现页面防刷新功能
Aug 19 PHP
PHP中的output_buffering详细介绍
Sep 27 PHP
php中动态修改ini配置
Oct 14 PHP
php使用文本统计访问量的方法
May 12 PHP
PHP页面间传递值和保持值的方法
Aug 24 PHP
Zend Framework分发器用法示例
Dec 11 PHP
php微信分享到朋友圈、QQ、朋友、微博
Feb 18 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注入过程分析
2012/01/06 PHP
PHP删除数组中的特定元素的代码
2012/06/28 PHP
php获取文件大小的方法
2014/02/26 PHP
PHP生成不重复标识符的方法
2014/11/21 PHP
PHP实现即时输出、实时输出内容方法
2015/05/27 PHP
yii去掉必填项中星号的方法
2015/12/28 PHP
php倒计时出现-0情况的解决方法
2016/07/28 PHP
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
2010/01/07 Javascript
web页面数据展示新想法(json)
2010/06/08 Javascript
Jquery Change与bind事件代码
2011/09/29 Javascript
JS中表单的使用小结
2014/01/11 Javascript
jquery动态改变form属性提交表单
2014/06/03 Javascript
node.js中的fs.link方法使用说明
2014/12/15 Javascript
JQuery实现图片轮播效果
2015/09/15 Javascript
WEB前端开发框架Bootstrap3 VS Foundation5
2016/05/16 Javascript
jQuery Checkbox 全选 反选的简单实例
2016/11/29 Javascript
ES6生成器用法实例分析
2017/04/10 Javascript
JavaScript实现隐藏省略文字效果的方法
2017/04/27 Javascript
JS中精巧的自动柯里化实现方法
2017/12/12 Javascript
vue.js2.0点击获取自己的属性和jquery方法
2018/02/23 jQuery
webpack v4 从dev到prd的方法
2018/04/02 Javascript
angular4+百分比进度显示插件用法示例
2019/05/05 Javascript
JS addEventListener()和attachEvent()方法实现注册事件
2021/01/11 Javascript
Python实现pdf文档转txt的方法示例
2018/01/19 Python
python 读文件,然后转化为矩阵的实例
2018/04/23 Python
python绘制已知点的坐标的直线实例
2019/07/04 Python
python numpy存取文件的方式
2020/04/01 Python
解决TensorFlow训练模型及保存数量限制的问题
2021/03/03 Python
德国PC硬件网站:CASEKING
2016/10/20 全球购物
法国面料和小百货在线商店:Mondial Tissus
2019/03/23 全球购物
小米官方旗舰店:Xiaomi
2020/08/07 全球购物
房屋租赁协议书
2014/10/18 职场文书
入党函调证明材料
2014/12/24 职场文书
2015年物业公司保洁工作总结
2015/10/22 职场文书
python如何正确使用yield
2021/05/21 Python
MyBatis 动态SQL全面详解
2021/10/05 MySQL