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 相关文章推荐
openflashchart 2.0 简单案例php版
May 21 PHP
PHP无法访问远程mysql的问题分析及解决
May 16 PHP
php中time()和mktime()方法的区别
Sep 28 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
Dec 03 PHP
PHP读取CURL模拟登录时生成Cookie文件的方法
Nov 04 PHP
PHP实现获取域名的方法小结
Nov 05 PHP
10个超级有用值得收藏的PHP代码片段
Jan 22 PHP
php+mysql查询实现无限下级分类树输出示例
Oct 03 PHP
PHP魔术方法以及关于独立实例与相连实例的全面讲解
Oct 18 PHP
PHP环形链表实现方法示例
Sep 15 PHP
PHP SESSION机制的理解与实例
Mar 22 PHP
PHP实现微信提现(企业付款到零钱)
Aug 01 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面向对象全攻略 (十一)__toString()用法 克隆对象 __call处理调用错误
2009/09/30 PHP
php采用ajax数据提交post与post常见方法总结
2014/11/10 PHP
php 微信开发获取用户信息如何实现
2016/12/13 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
浅谈laravel数据库查询返回的数据形式
2019/10/21 PHP
php判断数组是否为空的实例方法
2020/05/10 PHP
用js实现的页面关键字密度查询代码
2007/12/27 Javascript
JQUERY THICKBOX弹出层插件
2008/08/30 Javascript
用JavaScript编写COM组件的步骤
2009/03/17 Javascript
JavaScript Event学习第八章 事件的顺序
2010/02/07 Javascript
JS截取字符串常用方法详细整理
2013/10/28 Javascript
JS实现的一个简单的Autocomplete自动完成例子
2014/04/16 Javascript
Angular中的Promise对象($q介绍)
2015/03/03 Javascript
JS获取图片lowsrc属性的方法
2015/04/01 Javascript
JavaScript中的lastIndexOf()方法使用详解
2015/06/06 Javascript
12种JavaScript常用的MVC框架比较分析
2015/11/16 Javascript
Bootstrap实现登录校验表单(带验证码)
2016/06/23 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
2016/12/07 Javascript
BootStrap 页签切换失效的解决方法
2017/08/17 Javascript
vue2手机APP项目添加开屏广告或者闪屏广告
2017/11/28 Javascript
微信小程序数据存储与取值详解
2018/01/30 Javascript
浅谈在react中如何实现扫码枪输入
2018/07/04 Javascript
使用Node搭建reactSSR服务端渲染架构
2018/08/30 Javascript
vue-quill-editor插入图片路径太长问题解决方法
2021/01/08 Vue.js
Python3 Random模块代码详解
2017/12/04 Python
利用numpy和pandas处理csv文件中的时间方法
2018/04/19 Python
使用python将时间转换为指定的格式方法
2018/11/12 Python
python中dir()与__dict__属性的区别浅析
2018/12/10 Python
python构造IP报文实例
2020/05/05 Python
css3制作彩色边线3d立体按钮的示例(css3按钮)
2014/05/06 HTML / CSS
香港迪士尼乐园酒店预订:Hong Kong Disneyland Hotels
2017/05/02 全球购物
印尼最大的网上书店:Gramedia.com
2018/09/13 全球购物
解决方案设计综合面试题
2015/08/31 面试题
优秀演讲稿范文
2013/12/29 职场文书
python基础之文件操作
2021/10/24 Python