找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 243|回复: 0
打印 上一主题 下一主题

php 常用算法和时间复杂度

[复制链接]

3444

主题

3465

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11142
跳转到指定楼层
楼主
发表于 2018-2-14 08:15:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            按数量级递增排列,常见的时间复杂度有:常数阶O(1),对数阶O(log2n),线性阶O(n),线性对数阶O(nlog2n),平方阶O(n2),立方阶O(n3)
[U]复制代码[/U] 代码如下:
//二分查找O(log2n)
function erfen($a,$l,$h,$f){
    if($l >$h){ return false;}
    $m = intval(($l+$h)/2);
    if ($a[$m] == $f){
        return $m;
    }elseif ($f 0 && $a[$j-1]>$t;$j--){
          $a[$j] = $a[$j-1];         
      }
      $a[$j] = $t;
  }
  return $a;
}
//选择排序O(N*N)
function xuanze($a){
    $c = count($a);
    for($i=0;$i$a[$j]){
                $t = $a[$j];
                $a[$j] = $a[$i];
                $a[$i] = $t;
             }
        }
    }
    return $a;
}
//冒泡排序   O(N*N)
function maopao($a){
    $c = count($a);
    for($i=0;$i$i;$j--){
            if($a[$j]
[U]复制代码[/U] 代码如下:
/**
* 排列组合
* 采用二进制方法进行组合的选择,如表示5选3时,只需有3位为1就可以了,所以可得到的组合是 01101 11100 00111 10011 01110等10种组合
*
* @param 需要排列的数组 $arr
* @param 最小个数 $min_size
* @return 满足条件的新数组组合
*/
function plzh($arr,$size=5) {
  $len = count($arr);
  $max = pow(2,$len);
  $min = pow(2,$size)-1;
  $r_arr = array();
  for ($i=$min; $i
            
            
您可能感兴趣的文章:
  • PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
  • 一致性哈希算法以及其PHP实现详细解析
  • php中通过数组进行高效随机抽取指定条记录的算法
  • php四种基础算法代码实例
  • php加密算法之实现可逆加密算法和解密分享
  • 一组PHP可逆加密解密算法实例代码
  • php的hash算法介绍
  • 排序算法之PHP版快速排序、冒泡排序
  • php对称加密算法示例
  • PHP中对各种加密算法、Hash算法的速度测试对比代码
  • 又一个PHP实现的冒泡排序算法分享
  • PHP实现克鲁斯卡尔算法实例解析
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端