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 配置文件中open_basedir选项作用
Jul 19 PHP
php实现统计邮件大小的方法
Aug 06 PHP
使用php判断服务器是否支持Gzip压缩功能
Sep 24 PHP
PHP数据库链接类(PDO+Access)实例分享
Dec 05 PHP
Yii2中datetime类的使用
Dec 17 PHP
PHP+原生态ajax实现的省市联动功能详解
Aug 15 PHP
PHP自定义递归函数实现数组转JSON功能【支持GBK编码】
Jul 17 PHP
php闭包中使用use声明变量的作用域实例分析
Aug 09 PHP
PHP判断是否是微信打开还是浏览器打开的方法
Feb 27 PHP
laravel 解决强制跳转 https的问题
Oct 22 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
Apr 06 PHP
phpstudy2020搭建站点的实现示例
Oct 30 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学习笔记 PHP面向对象的程序设计
2011/06/13 PHP
解析php函数method_exists()与is_callable()的区别
2013/06/21 PHP
QQ互联一键登录审核不通过的解决方案
2014/09/10 PHP
laravel 使用事件系统统计浏览量的实现
2019/10/16 PHP
php实现JWT(json web token)鉴权实例详解
2019/11/05 PHP
使用git迁移Laravel项目至新开发环境的步骤详解
2020/04/06 PHP
用一段js程序来实现动画功能
2007/03/06 Javascript
使用jQuery快速解决input中placeholder值在ie中无法支持的问题
2014/01/02 Javascript
javascript-解决mongoose数据查询的异步操作
2016/12/22 Javascript
js实现城市级联菜单的2种方法
2017/06/23 Javascript
微信小程序实现表单校验功能
2020/03/30 Javascript
vue系列之动态路由详解【原创】
2017/09/10 Javascript
jquery判断滚动条距离顶部的距离方法
2018/09/05 jQuery
Node.js一行代码实现静态文件服务器的方法步骤
2019/05/07 Javascript
js删除指定位置超链接中含有百度与360的标题
2021/01/06 Javascript
python调用机器喇叭发出蜂鸣声(Beep)的方法
2015/03/23 Python
python计算N天之后日期的方法
2015/03/31 Python
Python编程中的for循环语句学习教程
2015/10/14 Python
python中os模块详解
2016/10/14 Python
python:socket传输大文件示例
2017/01/18 Python
Python从零开始创建区块链
2018/03/06 Python
Python实现查找最小的k个数示例【两种解法】
2019/01/08 Python
解决Atom安装Hydrogen无法运行python3的问题
2019/08/28 Python
Python迭代器iterator生成器generator使用解析
2019/10/24 Python
pytorch中torch.max和Tensor.view函数用法详解
2020/01/03 Python
Python单元测试模块doctest的具体使用
2020/02/10 Python
如何通过Python3和ssl实现加密通信功能
2020/05/09 Python
python dict乱码如何解决
2020/06/07 Python
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
元旦文艺汇演主持词
2014/03/26 职场文书
安全生产大检查方案
2014/05/07 职场文书
中华魂演讲稿
2014/05/13 职场文书
纪律教育学习月活动总结
2014/08/27 职场文书
给老师的一封感谢信
2015/01/20 职场文书
JS如何实现基于websocket的多端桥接平台
2021/05/14 Javascript
MySQL大小写敏感的注意事项
2021/05/24 MySQL