写了三个简单的算法,都是比较常用的

第一个是二分法查找,只能对有顺序的数组进行查找,速度应该是所有查找算法里最快的,

原理就是不停的做对折,以查找到目标!

第二个是冒泡排序,比较有名了,大学里c语言课必有的一个算法

第三个是从字符串中查找子串,也比较常用,以前用它做词频排序。

<?php
//二分法  $arr 数组,$k 要查找的值,$m 最小,$b最大
function dichotomy($arr,$k,$m=0,$b=0)
{
	$total=count($arr);
	if($total!=0 && $b==0) $b=$total;
	if($m<=$b){
		$avg=intval(($m+$b)/2);
		if($arr[$avg]==$k) return $avg;
		elseif($k<$arr[$avg]) return dichotomy($arr,$k,$m,$avg-1);
		else return dichotomy($arr,$k,$avg+1,$b);
	}
	return false;
}
echo "<hr>二分法查找<br>";
$arr=array(0,1,2,3,4,5,6,7,8,9,10);
var_dump(dichotomy($arr,1));


//冒泡排序
function bubblesort($arr)
{
	$total=count($arr);
	for($i=0;$i<$total-1;$i++){
		for($l=$i+1;$l<$total;$l++){
			if($arr[$i]>$arr[$l]){
				list($arr[$l],$arr[$i])=array($arr[$i],$arr[$l]);
			}
		}
	}
	return $arr;
}
echo "<hr>冒泡排序<br>";
$arr=array(1,100,23,434,22,12,3,5);
var_dump(bubblesort($arr));

//从字符串中搜索子串 $text 字符串,$str 要搜索的子串
function search($text,$str){
	$strLen=strlen($str);
	$textLen=strlen($text);
	for($i=0;$i<$textLen-$strLen;$i++){
		if(substr($text,$i,$strLen)==$str) return $i;
	}
	return false;
}
echo "<hr>字符串中搜索子串<br>";
$text="pdsofuapdoi3409729fhydish";
var_dump(search($text,"7"));
?>