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之第二天
Oct 09 PHP
模拟flock实现文件锁定
Feb 14 PHP
php下intval()和(int)转换使用与区别
Jul 18 PHP
使用eAccelerator加密PHP程序
Oct 03 PHP
PHP开发中四种查询返回结果分析
Jan 02 PHP
php 验证码(倾斜,正弦干扰线,黏贴,旋转)
Jun 29 PHP
PHP面向对象之后期静态绑定功能介绍
May 18 PHP
PHP中的静态变量及static静态变量使用详解
Nov 05 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
Oct 22 PHP
解决微信授权回调页面域名只能设置一个的问题
Dec 11 PHP
php json中文编码为null的解决办法
Dec 14 PHP
浅谈PHP无限极分类原理
Mar 14 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
在smarty模板中使用PHP函数的方法
2011/04/23 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
2011/10/31 PHP
PHP缓存技术的多种方法小结
2012/08/14 PHP
ThinkPHP查询中的魔术方法简述
2014/06/25 PHP
Yii2 rbac权限控制之rule教程详解
2016/06/23 PHP
php微信公众号开发之二级菜单
2018/10/20 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
javascript function调用时的参数检测常用办法
2010/02/26 Javascript
在JS中最常看到切最容易迷惑的语法(转)
2010/10/29 Javascript
Javascript中拼接大量字符串的方法
2015/02/05 Javascript
常用的JavaScript模板引擎介绍
2015/02/28 Javascript
javascript实现图片延迟加载方法汇总(三种方法)
2015/08/27 Javascript
JS实现直接运行html代码的方法
2017/03/13 Javascript
jQuery实现可拖动进度条实例代码
2017/06/21 jQuery
JavaScript中 ES6变量的结构赋值
2018/07/10 Javascript
vue2.0 下拉框默认标题设置方法
2018/08/22 Javascript
Vue监听数据渲染DOM完以后执行某个函数详解
2018/09/11 Javascript
给localStorage设置一个过期时间的方法分享
2018/11/06 Javascript
webpack4+express+mongodb+vue实现增删改查的示例
2018/11/08 Javascript
vue-cli点击实现全屏功能
2020/03/07 Javascript
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
python 统计代码行数简单实例
2017/05/04 Python
使用Python &amp; Flask 实现RESTful Web API的实例
2017/09/19 Python
Sublime开发python程序的示例代码
2018/01/24 Python
Python K最近邻从原理到实现的方法
2019/08/15 Python
python GUI模拟实现计算器
2020/06/22 Python
python Xpath语法的使用
2020/11/26 Python
员工工作表扬信范文
2014/01/13 职场文书
后进生转化工作制度
2014/01/17 职场文书
学生安全责任书
2014/04/15 职场文书
工作态度不端正检讨书
2014/10/04 职场文书
新学期家长寄语2016
2015/12/03 职场文书
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
2021/04/03 Javascript
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏
SQL Server一个字符串拆分多行显示或者多行数据合并成一个字符串
2022/05/25 SQL Server
永中文档在线转换预览基于nginx配置部署方案
2022/06/10 Servers