翻了翻网上的php面试题,看到了一些问题,提出了个人的一些见解!
- 冒泡排序的优化!
看网上的php面试题有冒泡排序,细察之下发现可以优化。
原代码:
<?php
function sort_Up ( $arr )
{
if( !is_array($arr) )
{
//传进来不是数组就return false;
return false;
}
for($i=0;$i<count($arr);$i++)
{
for($j=0;$j<count($arr)-1;$j++)
{
if( $arr[$j]> $arr[$j+1] )
{//如果数组角标小的数组的值大于数组角标大的数组的值则交换他们的值,实现冒泡
$temp = $arr[$j];
$arr[$j] = $arr[$j + 1];
$arr[$j + 1] = $temp;
}
}
}
return $arr;
}
var_dump(sort_Up ( [3,2,1] ));//打印出来是123
?>
这上面的这个程序中可以看到,3个数(count(
arr)=3),第一层
i<3;第二层$j<2.
流程图:
可以看到,里层多运行了几次循环。
j的循环次数随着
i的增加是逐渐减少的,因为数组中有序的元素个数在增加,无序的元素的个数在减少。
修改后的代码:
function sort_Up ( $arr )
{
if( !is_array($arr) )
{
//传进来不是数组就return false;
return false;
}
for($i=0;$i<count($arr);$i++)
{
for($j=0;$j<count($arr)-1-$i;$j++)//注意此处
{
if( $arr[$j]> $arr[$j+1] )
{
$temp = $arr[$j];
$arr[$j] = $arr[$j + 1];
$arr[$j + 1] = $temp;
}
}
}
return $arr;
}
var_dump(sort_Up ( [3,2,1] ));
- 变量的使用。
在增加类的属性时,变量的定义有多余,或者说有的代码写的很没有必要。比如:
class tree{
public $handle=null;
//...
}
$tree = tree();
$new = $tree->data;
$tree->data="213";
在这里的变量
new就没有意义,他是null。可以直接写为:
tree->data=”213”.效果一样的!
后面接着看,,,,