本章最后来做一个实例:
这个例子也是我一次面试的一道题目
综合实例: 要求写一个函数将一个数组 array(8,2,6,7,1,4,0) 从小到大排列,
不能用php内置的排序函数,必须自己写.
/*********************************************
* PHPfans系列教程:
*
http://www.phpfans.net/bbs/forumdisplay.php?fid=25
* 作 者: 我不是鱼
* Email:
[email protected]
* 博 客: http://www.phpfans.net/space/?2
*********************************************/
大家先做一下,下面是两个参考程序
<?php
$array = array(8,2,6,7,1,4,0);//创建数组
function array_sort($arr){
$arrlen = count($arr);//计算数组长度
$new_arr = array();
for($i=0;$i<$arrlen;$i++){
foreach($arr as $key => $value){//遍历数组
if(!isset($indexmin)) {
$indexmin = $value;//数组第一个元素直接赋值给当前最小值
$indexkey = $key;
}
else{
if($value < $indexmin) {
$indexmin = $value;//有比当前最新值更小的话交换
$indexkey = $key;
}
}
}
$new_arr[] = $indexmin;//数组赋值
unset($arr[$indexkey],$indexmin);//注销变量
}
return $new_arr;
}
$new_arr = array_sort($array);
print_r($new_arr);//打印数组
?> ;
其实冒泡法可以更简单点
<?php
//PHPfans站系列教程:
//http://www.phpfans.net/bbs/forumdisplay.php?fid=25
$array = array(8,2,6,7,1,4,0);
function array_sort($arr){
$arrlen = count($arr);
for($i=0;$i<$arrlen;$i++){
for($j=$arrlen-1;$j>$i;$j--){
if ($arr[$j] < $arr[$j-1]){
$tmp = $arr[$j];
$arr[$j] = $arr[$j-1];
$arr[$j-1] = $tmp;
}
}
}
return $arr;
}
$new_arr = array_sort($array);
print_r($new_arr);
?> ;
不过这个例子是不是不能对字符关联键的数组排序二第一个例子能呢?
如果大家有很好的算法或用了其他算法的也可以拿出来讨论.
好了,忙了好几天,这一章终于完成了,我也从中学到了不少,希望对大家有用.谢谢.
数组中还有其它一些函数和知识,希望大家继续学习,也希望大家拿出来分享,共同进步.