php不用内置函数对数组排序的两个算法代码

2015-01-24信息快讯网
一朋友找工作遇到的试题,备注一下。
极有可能今后我也会遇到的。
问题: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 ) ); //升序 
Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL报错解决方法
php设计模式 Visitor 访问者模式
调整优化您的LAMP应用程序的5种简单方法
php设计模式 Decorator(装饰模式)
php设计模式 Factory(工厂模式)
php设计模式 Template (模板模式)
php设计模式 Composite (组合模式)
php设计模式 Mediator (中介者模式)
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
php中session_unset与session_destroy的区别分析
php在页面中调用fckeditor编辑器的方法
php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE eval()'d code error
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
mysql_num_rows VS COUNT 效率问题分析
PHP学习之输出字符串(echo,print,printf,print_r和var_dump)
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
用php实现的下载css文件中的图片的代码
Linux下将excel数据导入到mssql数据库中的方法
Zend framework处理一个http请求的流程分析
php cout&lt;&lt;的一点看法
PHP 时间转换Unix时间戳代码
PHP has encountered an Access Violation 错误的解决方法
PHP simple_html_dom.php+正则 采集文章代码
phpmyadmin导入(import)文件限制的解决办法
php中$this-&gt;含义分析
php 引用(&)详解
PHP CKEditor 上传图片实现代码
php pack与unpack 摸板字符字符含义
Wordpress php 分页代码
php foreach、while性能比较
php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
PHP has encountered an Access Violation at 7C94BD02解决方法
PHP DataGrid 实现代码
©2014-2024 dbsqp.com