php数组
全部回复
仅看楼主
level 1
//##查找search
//要求从一个数组中查找一个数,如果查找则输入该数的下标,如果找不到,则输出查无此事
/*----案例-----*/
$arr=array(46,90,900,0,-1,-1);
function search(&$arr,$findVal){
$flag=false;
foreach($arr as $key=>$val){
if($findVal==$arr[$key]){
echo "找到了,下标为:$key"; $flag=true; //break; } } if(!$flag){ echo '查询不到'; } } search($arr,-1);
/*------二分查找法(必须掌握)-------*/ //二分查找:必备前提:该数组本身已经是一个有序数组,如果该数组不是有序的,则必须先排序,才能使用查找 //查找步骤:首先找到数组中间这个数,然后与要查找的数比较,如果要查找的数大于中间这个数,则说明应当向后找,否则,向前找,如果相等,则说明找到。 /*------案例binarySearch-----*/ function binarySearch(&$arr,$findVal,$leftIndex,$rightIndex){ //当$rightIndex<$leftIndex说明没有数 if($rightIndex<$leftIndex){ echo "找不到该数"; return; } $middleIndex=round(($rightIndex+$leftIndex)/2);//找到中间这个数,round()函数:把浮数点四舍五入 if($findVal>$arr[$middleIndex]){//如果大于,向后面找 binarySearch($arr,$findVal,$middleIndex+1,$rightIndex); }else if($findVal<$arr[$middleIndex]){//如果是小于中间这个数,则向前面找 binarySearch($arr,$findVal,$leftIndex,$middleIndex-1); }else{ echo "找到这个数 下标是 $middleIndex"; } } $arr=array(0,90,91,99,999,999990); binarySearch($arr,-3,0,count($arr)-1);
?>
2012年10月02日 23点10分 1
level 1
<?php
/*排序:1.内部排序法;2.外部排序法*//*------冒泡法-----*/
//把冒泡法封装成函数,
function bubbleSort(&$myarr){
$temp=0;//中间变量
//我们要把数组,从小到大排序=>要确定最大个和最小的数
//外层循环
for($i=0;$i<count($myarr)-1;$i++){
for($j=0;$j<count($myarr)-1-$i;$j++){
//说明前面的数比后面的数大,就要交换
if($myarr[$j]>$myarr[$j+1]){
$temp=$myarr[$j];
$myarr[$j]=$myarr[$j+1];
$myarr[$j+1]=$temp;
$flag=true;
}
}
//判断
if(!$flag){
//已经是有序
break;
}
$flag=false;
}
}
$arr=array(0,5,-1,5,6,7);
bubbleSort($arr);
print_r($arr);
?>
2012年10月02日 23点10分 2
1