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 获取全局变量的代码
Apr 21 PHP
PHP无法访问远程mysql的问题分析及解决
May 16 PHP
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
Nov 14 PHP
ThinkPHP3.1新特性之对分组支持的改进与完善概述
Jun 19 PHP
PHP使用pear自带的mail类库发邮件的方法
Jul 08 PHP
WordPress主题制作之模板文件的引入方法
Dec 28 PHP
PHP strip_tags() 去字符串中的 HTML、XML 以及 PHP 标签的函数
May 22 PHP
PHP高精确度运算BC函数库实例详解
Aug 15 PHP
PHP getDocNamespaces()函数讲解
Feb 03 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
Mar 14 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
Apr 03 PHP
PHP面向对象程序设计之构造方法和析构方法详解
Jun 13 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
配置支持SSI
2006/11/25 PHP
thinkphp浏览历史功能实现方法
2014/10/29 PHP
PHP中substr()与explode()函数用法分析
2014/11/24 PHP
PHP中的替代语法介绍
2015/01/09 PHP
php绘制一个矩形的方法
2015/01/24 PHP
CodeIgniter框架钩子机制实现方法【hooks类】
2018/08/21 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2021/03/09 PHP
文本框获得焦点和失去焦点的判断代码
2012/03/18 Javascript
JavaScript子窗口调用父窗口变量和函数的方法
2015/10/09 Javascript
使用JQuery实现Ctrl+Enter提交表单的方法
2015/10/22 Javascript
jquery实现图片放大镜功能
2015/11/23 Javascript
关于Jquery中的事件绑定总结
2016/10/26 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
基于Swiper实现移动端页面图片轮播效果
2017/12/28 Javascript
详解微信小程序获取当前时间及日期的方法
2019/04/28 Javascript
深入理解基于vue-cli的webpack打包优化实践及探索
2019/10/14 Javascript
详解VUE中的插值( Interpolation)语法
2020/10/18 Javascript
[01:23:24]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第三场 2月7日
2021/03/11 DOTA
Python字典操作简明总结
2015/04/13 Python
Python如何抓取天猫商品详细信息及交易记录
2018/02/23 Python
python消除序列的重复值并保持顺序不变的实例
2018/11/08 Python
Python操作json的方法实例分析
2018/12/06 Python
Python File(文件) 方法整理
2019/02/18 Python
Python基本语法之运算符功能与用法详解
2019/10/22 Python
修改Pandas的行或列的名字(重命名)
2019/12/18 Python
关于keras中keras.layers.merge的用法说明
2020/05/23 Python
python语音识别指南终极版(有这一篇足矣)
2020/09/09 Python
优秀实习生主要事迹
2014/05/29 职场文书
运动会稿件100字
2014/09/24 职场文书
公司总经理岗位职责
2015/04/01 职场文书
委托收款证明
2015/06/23 职场文书
2016年优秀教师先进事迹材料
2016/02/26 职场文书
Python scrapy爬取起点中文网小说榜单
2021/06/13 Python
总结Python变量的相关知识
2021/06/28 Python
mysql 生成连续日期及变量赋值
2022/03/20 MySQL
vscode远程免密登入Linux服务器的配置方法
2022/06/28 Servers