对于一个半路出家的IT工作者,数据结构与算法处于一种严重的先天不足状态。
今天简单的研究了一下最常用的冒泡法排序与二分法查找,写了一个简单的案例,加强自己对php的学习,也希望对今后php学习者能提供一点点的帮助。

//冒泡法排序
//随便给出一个乱序数组
$arr = array(0,2,10,9,19,23,89,112,321,234);
//统计数组
$num = count($arr);
//冒泡倒序排列
for($i=0;$i<$num-1;$i++){
	for($m=0;$m<$num-1;$m++){
		if($arr[$m]<$arr[$m+1]){
			$temp = $arr[$m];
			$arr[$m] = $arr[$m+1];
			$arr[$m+1] = $temp;
		}
		// echo $arr[$m].'<br>';
	}
}
//输出排序后的结果
var_dump($arr);
//冒泡顺序排列
for($x=0;$x<$num-1;$x++){
	for($y=0;$y<$num-1;$y++){
		if($arr[$y]>$arr[$y+1]){
			$temp = $arr[$y];
			$arr[$y] = $arr[$y+1];
			$arr[$y+1] = $temp;
		}
	}
}
//输出排序后的结果
var_dump($arr);
//二分法查找
function dichotomy($array,$k,$low=0,$high=0){
	if(count($array)!= 0 && $high == 0){
		$high = count($array);
	}
	if($low <= $high){
		$mid = intval(($low+$high)/2);
		if( $array[$mid] == $k ){
			return $mid;
		}elseif( $k<$array[$mid]){
			return dichotomy( $array,$k,$low=0,$mid-1);
		}else{
			return dichotomy( $array,$k,$mid+1,$high);
		}
	}else{
		return false;
	}
}
//输出查找结果
echo dichotomy($arr,23);

这里只是给出一个简单的案例,便于大家在php学习的过程中有个参考,更多有关冒泡法与二分法的内容,百度一下,你就知道!!!

【技术交流,欢迎大家拍砖】

还没有评论哦!