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 相关文章推荐
文件上传类
Oct 09 PHP
excellent!――ASCII Art(由目标图象生成ascii)
Feb 20 PHP
php下连接ftp实现文件的上传、下载、删除文件实例代码
Jun 03 PHP
php性能优化分析工具XDebug 大型网站调试工具
May 22 PHP
php jquery 多文件上传简单实例
Dec 23 PHP
php中关于长度计算容易混淆的问题分析
May 27 PHP
php mongodb操作类 带几个简单的例子
Aug 25 PHP
thinkphp分页集成实例
Jul 24 PHP
thinkphp5 URL和路由的功能详解与实例
Dec 26 PHP
Laravel5.4框架使用socialite实现github登录的方法
Mar 20 PHP
Laravel第三方包报class not found的解决方法
Oct 13 PHP
PHP7 新增功能
Mar 09 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
wordpress之wp-settings.php
2007/08/17 PHP
php include的妙用,实现路径加密
2008/07/29 PHP
laravel 4安装及入门图文教程
2014/10/29 PHP
php目录遍历函数opendir用法实例
2014/11/20 PHP
利用javascript实现一些常用软件的下载导航
2009/08/03 Javascript
让你的博文自动带上缩址的实现代码,方便发到微博客上
2010/12/28 Javascript
JS获取文本框,下拉框,单选框的值的简单实例
2014/02/26 Javascript
JS将光标聚焦在文本最后的实现代码
2014/03/28 Javascript
js的touch事件的实际引用
2014/10/13 Javascript
jQuery中next()方法用法实例
2015/01/07 Javascript
JavaScript实现数字数组按照倒序排列的方法
2015/04/06 Javascript
js带前后翻页的图片切换效果代码分享
2015/09/08 Javascript
js实现为a标签添加事件的方法(使用闭包循环)
2016/08/02 Javascript
js实现图片加载淡入淡出效果
2017/04/07 Javascript
Vue.js中兄弟组件之间互相传值实例
2017/06/01 Javascript
Vue 框架之键盘事件、健值修饰符、双向数据绑定
2018/11/14 Javascript
webpack 最佳配置指北(推荐)
2020/01/07 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
2020/07/21 Javascript
python通过邮件服务器端口发送邮件的方法
2015/04/30 Python
Python的Django框架安装全攻略
2015/07/15 Python
浅谈Python实现Apriori算法介绍
2017/12/20 Python
Python引用计数操作示例
2018/08/23 Python
对python中xlsx,csv以及json文件的相互转化方法详解
2018/12/25 Python
Python弹出输入框并获取输入值的实例
2019/06/18 Python
Django 拆分model和view的实现方法
2019/08/16 Python
css3进行截取替代js的substring
2013/09/02 HTML / CSS
Java面试题:请说出如下代码的输出结果
2013/04/22 面试题
爱情保证书范文
2014/02/01 职场文书
母婴店促销方案
2014/03/05 职场文书
幼儿园小班个人工作总结
2015/02/12 职场文书
勇敢的心观后感
2015/06/09 职场文书
文化大革命观后感
2015/06/17 职场文书
公司酒会主持词
2015/07/02 职场文书
请病假条范文
2015/08/17 职场文书
人民币使用说明书
2019/04/17 职场文书
Java 中的 Unsafe 魔法类的作用大全
2021/06/26 Java/Android