php 自定义函数处理数组排序问题
$arr = array(1,4,5,2,3,7,6,0);
$arrlen = count($arr); //统计数组值数
for($k=0;$k<$arrlen;$k++){
for($i=0;$i<$arrlen;$i++){
if($arr[$i] > $arr[$i+1]){ //如果一个值比下一个值大成立执行下面
$a = $arr[$i]; //把$a 赋给这个值
$arr[$i] = $arr[$i+1]; //这是什么意思,把下一个值赋给这个值,这是进行下一个值判断吗
$arr[$i+1] = $a; // 这里好像又回到前面了,这里是用递归处理的吗?小弟有些不懂
}
}
}
print_r($arr);
//哪位大牛给小弟解释下,在此感激不尽
与下面代码有小许区别,自定义涵数多了一个[1] => 这个key对应的是空的
<?php
$arr = array(1,4,5,2,3,7,6,0);
sort($arr);
print_r($arr);
?>
$a = $arr[$i];
$arr[$i] = $arr[$i+1];
$arr[$i+1] = $a;
这3行相当于把$arr[$i]和$arr[$i+1]交换各世模纳自的值。把$a作为临时搜没交换时的缓存$arr[i]的值
相当于 $a=1; $b=2;要交换$a和$b的值,先设一个临时变量$t
$t=$a; $a=$b; $b=$t; 经过这3部就交换了$a, $b的值
整个算法是用的冒泡排序,效率比sort函数的快速排序要低、差很多。
尽量码耐用系统函数实现排序的快捷吧。有自定义需求可以用usort