问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

最常见的算法,用PHP如何实现

发布网友 发布时间:2022-04-22 23:00

我来回答

1个回答

热心网友 时间:2022-04-06 01:55

1、冒泡排序
function bubble_sort($arr) {
    $n=count($arr);
    for($i=0;$i<$n-1;$i ){
        for($j=$i 1;$j<$n;$j ) {
            if($arr[$j]<$arr[$i]) {
                $temp=$arr[$i];
                $arr[$i]=$arr[$j];
                $arr[$j]=$temp;
            }
        }
    }
    return $arr;
}
2、归并排序
function Merge(&$arr, $left, $mid, $right) {
  $i = $left;
  $j = $mid 1;
  $k = 0;
  $temp = array();
  while ($i <= $mid && $j <= $right)
  {
    if ($arr[$i] <= $arr[$j])
      $temp[$k ] = $arr[$i ];
    else
      $temp[$k ] = $arr[$j ];
  }
  while ($i <= $mid)
    $temp[$k ] = $arr[$i ];
  while ($j <= $right)
    $temp[$k ] = $arr[$j ];
  for ($i = $left, $j = 0; $i <= $right; $i , $j )
    $arr[$i] = $temp[$j];
}
 
function MergeSort(&$arr, $left, $right)
{
  if ($left < $right)
  {
    $mid = floor(($left $right) / 2);
    MergeSort($arr, $left, $mid);
    MergeSort($arr, $mid 1, $right);
    Merge($arr, $left, $mid, $right);
  }
}
3、二分查找-递归
function bin_search($arr,$low,$high,$value) {
    if($low>$high)
        return false;
    else {
        $mid=floor(($low $high)/2);
        if($value==$arr[$mid])
            return $mid;
        elseif($value<$arr[$mid])
            return bin_search($arr,$low,$mid-1,$value);
        else
            return bin_search($arr,$mid 1,$high,$value);
    }
}
4、二分查找-非递归
function bin_search($arr,$low,$high,$value) {
    while($low<=$high) {
        $mid=floor(($low $high)/2);
        if($value==$arr[$mid])
            return $mid;
        elseif($value<$arr[$mid])
            $high=$mid-1;
        else
            $low=$mid 1;
    }
    return false;
}
5、快速排序
function quick_sort($arr) {
    $n=count($arr);
    if($n<=1)
        return $arr;
    $key=$arr[0];
    $left_arr=array();
    $right_arr=array();
    for($i=1;$i<$n;$i ) {
        if($arr[$i]<=$key)
            $left_arr[]=$arr[$i];
        else
            $right_arr[]=$arr[$i];
    }
    $left_arr=quick_sort($left_arr);
    $right_arr=quick_sort($right_arr);
    return array_merge($left_arr,array($key),$right_arr);
}
6、选择排序
function select_sort($arr) {
    $n=count($arr);
    for($i=0;$i<$n;$i ) {
        $k=$i;
        for($j=$i 1;$j<$n;$j ) {
           if($arr[$j]<$arr[$k])
               $k=$j;
        }
        if($k!=$i) {
            $temp=$arr[$i];
            $arr[$i]=$arr[$k];
            $arr[$k]=$temp;
        }
    }
    return $arr;
}
7、插入排序
function insertSort($arr) {
    $n=count($arr);
    for($i=1;$i<$n;$i ) {
        $tmp=$arr[$i];
        $j=$i-1;
        while($arr[$j]>$tmp) {
            $arr[$j 1]=$arr[$j];
            $arr[$j]=$tmp;
            $j--;
            if($j<0)
                break;
        }
    }
    return $arr;
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
抹完水泥墙多久能刮腻子 水泥墙抹完后需要多久刮腻子? 水泥抹墙多久能刮腻子 水泥多久能刮腻子 刚抹完的水泥墙几天能刮腻子 墙面多久能刮腻子 水泥墙多久可以刮腻子 砌完水泥多久刮腻子 水泥砌好后什么时候可以刮腻子 ...40个学分,托福110分,转学去美国哥伦比亚大学希望大吗? 你好,哥伦比亚大学排名怎么样?小白,想去哥伦比亚大学读研 真我Q3T屏幕是什么材质-是LCD屏还是OLED屏 使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组 今年后期苹果行情会涨吗 php冒泡排序法~呢? PHP数组排序array_multisort函数详细用法跟排序方法是怎样的?_百度知 ... 保温杯泡茶的危害到底有多大? 现在的苹果出口市场行情怎么样?求大神帮助 php如何按数组键值排序? 年后,各地苹果行情如何? 苹果市场价多少 php中对一组数字从大到小排序方法 供求理论分析为什么苹果在消费旺季价格下降,海边别墅却在消费旺季价格上升 用保温杯泡茶好不好? php数组随机排序几种方法 关于PHP冒泡排序法。 运用经济生活的知识预测苹果手机价格可能走势并说明理由 为什么不能用保温杯泡茶? PHP 怎么用冒泡算法进行排序呢 美国苹果股市一直都在上升的原因? php数组排序有很多的方法,哪位可以详细的分解一二吗,如用函数和不用函 ... PHP中的快速排序算法如何实现倒序? 保温杯泡茶易致癌,这是真的吗,为什么? 保温杯泡茶易致癌,这是真的吗,有什么影响呢? php数组怎样排序 order by 在php中怎么排序键值数组 用保温杯泡茶,真的有害健康吗? php中的sort()函数 是什么算法? 川剧的变脸是怎么做到? 川剧变脸,最多变几张脸?回几张呢? php 算法 堆排序 四川川剧中变脸到底是怎么一回事?求详细解说! 是不是保温杯泡茶不好? 教一些最简单的川剧变脸方法 保温杯为何泡茶不好? 川剧变脸是怎么变的? 用保温杯泡茶好么 “川剧变脸揭秘”的过程和原理是什么? 保温杯泡茶叶好不好 川剧中变脸的秘密是什么? 川剧变脸到底是如何变的? 川剧变脸是国家二级机密吗?