这篇文章主要介绍了PHP四种基本排序算法和两种查找算法示例,本文用一个实例讲解冒泡排序法、快速排序法、选择排序法、插入排序法的使用,需要的朋友可以参考下
本文汇总了常见的php排序算法和查找,,在进行算法设计的时候有不错的借鉴价值。现分享给大家供参考之用。具体如下:
$arr[$j 1]){
$temp=$arr[$j];
$arr[$j]=$arr[$j 1];
$arr[$j 1]=$temp;
$flag=true;
}
}
if(!$flag){
//已经是有序了
break;
}
$flag=false;
}
}
//PHP选择排序法 效率比冒泡要高
function selectSort(&$arr){
$temp=0;
for($i=0;$i$arr[$j]){
$minVal=$arr[$j];
$minIndex=$j;
}
}
//最后交换
$temp=$arr[$i];
$arr[$i]=$arr[$minIndex];
$arr[$minIndex]=$temp;
}
}
//插入排序法(小到大排序) 效率又比 选择排序法要高一些
function insertSort(&$arr){
//先默认下标为0的这个数已经是有序
for($i=1;$i= 0 && $insertVal < $arr[$inserIndex]){
//同时把数后移
$arr[$inserIndex 1] = $arr[$inserIndex];
$inserIndex--;
}
//插入(这时就给$inserIndex找到适当的位置)
$arr[$inserIndex 1] = $insertVal;
}
}
//快速排序法 第一种写法 不是我实现的
function quickSort($left,$right,&$arr){
$l=$left;
$r=$right;
$pivot= $arr[($left $right)/2];
while($l<$r){
while($arr[$l]<$pivot){
$l ;
}
while($arr[$r]>$pivot){
$r--;
}
if($l>=$r){
break;
}
$temp=$arr[$l];
$arr[$l]=$arr[$r];
$arr[$r]=$temp;
if($arr[$l]==$pivot){
--$r;
}
if($arr[$r]==$pivot){
$l;
}
}
if($l==$r){
$l ;
$r--;
}
if($left<$r) quickSort($left,$r,$arr);
if($right>$l) quickSort($l,$right,$arr);
}
/*** 快速排序方法 第二种实现方法 自己实现的
* PHP快速排序方法
* $order asc 小到大 desc大到小 默认是asc
* $order 的值只能为 asc desc 如果乱写一个值也是按asc排序的*/
function quickSort2($arr,$order = 'asc')
{
if(count($arr) <= 1)
return $arr;
$arr_left = $arr_right = array();
$val = $arr[0];unset($arr[0]);
foreach ($arr as $v) {
if(strtolower($order) == 'desc'){
if($v < $val)
$arr_right[] = $v;
else
$arr_left[] = $v;
}else{
if($v > $val)
$arr_right[] = $v;
else
$arr_left[] = $v;
}
}
$arr_left = quickSort($arr_left,$order);
$arr_right = quickSort($arr_right,$order);
return array_merge($arr_left,array($val),$arr_right);
}
//下面是查找
$arr=array(46,90,900,0,-1);
//这是按顺序查询
function search(&$arr,$findVal){
$flag=false;
for($i=0;$i $arr[$middleIndex]){
binarySearch($arr,$findVal,$middleIndex 1,$rightIndex);
//如果小于中间数,则向前面找
}else if($findVal < $arr[$middleIndex]){
binarySearch($arr,$findVal,$leftIndex,$middleIndex-1);
}else{
echo "找到这个数。下标是$middleIndex";
}
}
?>
希望本文所述排序算法和查找算法实例对大家的php程序设计有所帮助。