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转成EXE文件
Oct 09 PHP
一个用于mysql的数据库抽象层函数库
Oct 09 PHP
PHP Array交叉表实现代码
Aug 05 PHP
PHP 透明水印生成代码
Aug 27 PHP
thinkPHP的Html模板标签使用方法
Nov 13 PHP
用PHP即时捕捉PHP中的错误并发送email通知的实现代码
Jan 19 PHP
探讨php中header的用法详解
Jun 07 PHP
解析PHP自带的进位制之间的转换函数
Jun 08 PHP
php实现简单的MVC框架实例
Sep 23 PHP
PHP正则获取页面所有图片地址
Mar 23 PHP
thinkphp隐藏index.php/home并允许访问其他模块的实现方法
Oct 13 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
May 06 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
Protoss魔法科技
2020/03/14 星际争霸
牡丹941资料
2021/03/01 无线电
smarty学习笔记之常见代码段用法总结
2016/03/19 PHP
JavaScript设置IFrame高度自适应(兼容各主流浏览器)
2013/06/05 Javascript
Jquery 模板数据绑定插件的使用方法详解
2013/07/08 Javascript
读取input:file的路径并显示本地图片的方法
2013/09/23 Javascript
利用JS判断用户是否上网(连接网络)
2013/12/23 Javascript
简单的代码实现jquery定时器
2014/01/03 Javascript
一行命令搞定node.js 版本升级
2014/07/20 Javascript
javascript抽象工厂模式详细说明
2014/12/16 Javascript
JS解析XML文件和XML字符串详解
2015/04/17 Javascript
兼容各大浏览器的JavaScript阻止事件冒泡代码
2015/07/09 Javascript
jquery自适应布局的简单实例
2016/05/28 Javascript
JS实现仿百度文库评分功能
2017/01/12 Javascript
jQuery实现分页功能(含ajax请求、后台数据、附完整demo)
2017/04/03 jQuery
Angular 2父子组件之间共享服务通信的实现
2017/07/04 Javascript
详解React native全局变量的使用(跨组件的通信)
2017/09/07 Javascript
JS实现中文汉字按拼音排序的方法
2017/10/09 Javascript
Vue + better-scroll 实现移动端字母索引导航功能
2018/05/07 Javascript
jQuery+CSS实现的标签页效果示例【测试可用】
2018/08/14 jQuery
vue-cli 3.0 版本与3.0以下版本在搭建项目时的区别详解
2018/12/11 Javascript
Vue设置长时间未操作登录自动到期返回登录页
2020/01/22 Javascript
Quasar Input:type=&quot;number&quot; 去掉上下小箭头 实现加减按钮样式功能
2020/04/09 Javascript
Python实现插入排序和选择排序的方法
2019/05/12 Python
如何基于Python获取图片的物理尺寸
2019/11/25 Python
Linux安装Python3如何和系统自带的Python2并存
2020/07/23 Python
Mistine官方海外旗舰店:泰国国民彩妆品牌
2016/12/28 全球购物
意大利香水和彩妆护肤品购物网站:Ditano
2017/08/13 全球购物
德国前卫设计师时装在线商店:Luxury Loft
2019/11/04 全球购物
Ray-Ban雷朋太阳眼镜英国官网:Ray-Ban UK
2019/11/23 全球购物
医学院毕业生自荐信
2013/11/08 职场文书
经贸日语专业个人求职信
2013/12/13 职场文书
社区学雷锋活动策划方案
2014/01/30 职场文书
社区健康教育工作方案
2014/06/03 职场文书
推广普通话的宣传语
2015/07/13 职场文书
Rust 连接 PostgreSQL 数据库的详细过程
2022/01/22 PostgreSQL