当前位置: 首页 > 图文教程 > 网络编程 > PHP > php不用内置函数对数组排序的两个算法代码

PHP
MySQL数据库常见函数详解(1)
MySQL数据库常见函数详解(2)
MySQL数据库常见函数详解(3)
PHP5中新增加的日期(date)函数的常量
PHP:实现给上传图片加水印的程序代码
PHP动态网站开发中常用的8个小技巧
用PHP程序直接调用文本文件内容分析
简单学习PHP向MYSQL中插入数据的代码
PHP中常用的几个 mysql 语句
初学PHP指导:php.ini 配置详细选项
用动态网页技术PHP生成验证码图片的源代码
PHP动态网页开发实现支持页面回跳的方法
实例:PHP生成word文档格式试卷的代码
PHP开发技巧之用递归替换数组中的内容
实用技巧:PHP中调用Java类的两种方法
PHP的mb_substr和mb_strcut的区别
学习动态网页技术PHP:GD库安装问题详解
动态网页制作技术PHP的拼写检查函数库
通过PHP服务器端特性的配置加强PHP的安全
由浅入深学习动态网页制作PHP的编程与应用

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-02-27   浏览: 126 ::
收藏到网摘: n/a

php不用内置函数对数组排序,可能是降序或者升序 一朋友找工作遇到的试题,备注一下。
极有可能今后我也会遇到的。
问题: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 ) ); //升序