백엔드 개발 PHP 튜토리얼 php 常用算法和时间复杂度_php技巧

php 常用算法和时间复杂度_php技巧

May 17, 2016 am 08:57 AM
일반적으로 사용되는 알고리즘 시간 복잡도

按数量级递增排列,常见的时间复杂度有:常数阶O(1),对数阶O(log2n),线性阶O(n),线性对数阶O(nlog2n),平方阶O(n2),立方阶O(n3)

复制代码 代码如下:

//二分查找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         return erfen($a, $l, $m-1, $f);
    }else{
        return erfen($a, $m+1, $h, $f);
    }

}
$a = array(1,12,23,67,88,100);
var_dump(erfen($a,0,5,1));
//遍历树O(log2n)
function bianli($p){
    $a = array();
    foreach (glob($p.'/*') as $f){
        if(is_dir($f)){
            $a = array_merge($a,bianli($f));
        }else{
            $a[] = $f;
        }
    }
    return $a;
}
//阶乘O(log2n)
function jc($n){
    if($n        return 1;
    }else{
        return $n*jc($n-1);
    }   
}
//快速查找  O(n *log2(n))
function kuaisu($a){
    $c = count($a);
    if($c     $l = $r = array();   
    for ($i=1;$i        if($a[$i]             $l[] = $a[$i];
        }else{
            $r[] = $a[$i];
        }
    }
    $l = kuaisu($l);
    $r = kuaisu($r);
    return array_merge($l,array($a[0]),$r);
}
//插入排序  O(N*N)
function charu($a){
  $c = count($a);
  for($i=1;$i      $t = $a[$i];
      for($j=$i;$j>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        for ($j=$i+1;$j            if($a[$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        for ($j=$c-1;$j>$i;$j--){
            if($a[$j]                $t = $a[$j-1];
               $a[$j-1] = $a[$j];
               $a[$j] = $t;
            }
        }   
    }
    return $a;
}

复制代码 代码如下:

/**
 * 排列组合
 * 采用二进制方法进行组合的选择,如表示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   $count = 0;
   $t_arr = array();
   for ($j=0; $j    $a = pow(2, $j);
    $t = $i&$a;
    if($t == $a){
     $t_arr[] = $arr[$j];
     $count++;
    }
   }  
   if($count == $size){
    $r_arr[] = $t_arr;   
   }  
  }
  return $r_arr;
 }

$pl = pl(array(1,2,3,4,5,6,7),5);
var_dump($pl);

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

C++ 재귀 함수의 시간 복잡도를 분석하는 방법은 무엇입니까? C++ 재귀 함수의 시간 복잡도를 분석하는 방법은 무엇입니까? Apr 17, 2024 pm 03:09 PM

재귀 함수의 시간 복잡도 분석에는 기본 사례 및 재귀 호출 식별이 포함됩니다. 기본 사례와 각 재귀 호출의 시간 복잡도를 계산합니다. 모든 재귀 호출의 시간 복잡도를 합산합니다. 함수 호출 수와 문제 크기 사이의 관계를 고려하십시오. 예를 들어 계승 함수의 시간 복잡도는 O(n)입니다. 각 재귀 호출이 재귀 깊이를 1씩 증가시켜 총 깊이가 O(n)이 되기 때문입니다.

PHP 함수의 시간 복잡성 문제를 처리하는 방법은 무엇입니까? PHP 함수의 시간 복잡성 문제를 처리하는 방법은 무엇입니까? Apr 26, 2024 pm 02:12 PM

시간 복잡도는 함수가 실행되는 데 걸리는 시간을 측정한 것입니다. 일반적인 PHP 함수 시간 복잡도 문제에는 중첩 루프, 대규모 배열 순회 및 재귀 호출이 포함됩니다. 시간 복잡성을 최적화하는 기술에는 다음이 포함됩니다. 캐싱을 사용하여 루프 수 줄이기 병렬 처리를 사용하여 알고리즘 단순화

Go 언어의 시간 복잡도와 공간 복잡도 분석 Go 언어의 시간 복잡도와 공간 복잡도 분석 Mar 27, 2024 am 09:24 AM

Go는 쓰기 쉽고, 읽기 쉽고, 유지 관리하기 쉬우면서도 고급 프로그래밍 개념을 지원하도록 설계된 프로그래밍 언어로 점점 더 인기를 얻고 있습니다. 시간 복잡도와 공간 복잡도는 알고리즘과 데이터 구조 분석에서 중요한 개념으로, 프로그램의 실행 효율성과 메모리 크기를 측정합니다. 이번 글에서는 Go 언어의 시간 복잡도와 공간 복잡도를 분석하는 데 중점을 둘 것입니다. 시간 복잡도(Time Complexity) 시간 복잡도는 알고리즘의 실행 시간과 문제 크기 사이의 관계를 나타냅니다. 시간은 일반적으로 Big O 표기법으로 표현됩니다.

C++에서 시간 복잡도와 공간 복잡도를 사용하여 알고리즘을 분석하는 방법 C++에서 시간 복잡도와 공간 복잡도를 사용하여 알고리즘을 분석하는 방법 Sep 21, 2023 am 11:34 AM

C++에서 시간 복잡도와 공간 복잡도를 사용하여 알고리즘을 분석하는 방법 시간 복잡도와 공간 복잡도는 알고리즘을 실행하는 데 걸리는 시간과 필요한 공간을 측정한 것입니다. 소프트웨어 개발에서는 최적의 솔루션을 선택하기 위해 알고리즘의 효율성을 평가해야 하는 경우가 많습니다. 고성능 프로그래밍 언어인 C++는 풍부한 데이터 구조와 알고리즘 라이브러리는 물론 강력한 컴퓨팅 기능과 메모리 관리 메커니즘을 제공합니다. 이 기사에서는 C++에서 시간 복잡도 및 공간 복잡도 분석 알고리즘을 사용하는 방법을 소개하고 특정 코드 예제를 통해 이를 수행하는 방법을 설명합니다.

정렬 후 PHP 배열의 시간 복잡도는 얼마입니까? 정렬 후 PHP 배열의 시간 복잡도는 얼마입니까? May 01, 2024 am 10:00 AM

PHP 배열 셔플 정렬의 시간 복잡도는 O(n)이고, 실행 시간은 배열 크기에 비례합니다. 실제 사례: 배열을 만들고 섞기 기능을 사용하여 정렬을 방해하고 섞인 배열을 인쇄합니다.

C++ 시간 복잡도의 일반적인 함정과 최적화 전략 C++ 시간 복잡도의 일반적인 함정과 최적화 전략 Jun 01, 2024 pm 10:09 PM

시간 복잡도 트랩을 이해하는 것이 중요합니다. 1. 올바른 알고리즘을 사용합니다. 2. 불필요한 복사본을 줄입니다. 실제 예제에서는 배열의 제곱합을 계산하고, 문자열을 대문자로 변환하고, 순서가 지정되지 않은 배열에서 요소를 찾는 최적화 방법을 살펴봅니다.

PHP에서 계산 정렬 알고리즘의 원리와 시간 복잡도 분석을 알아봅니다. PHP에서 계산 정렬 알고리즘의 원리와 시간 복잡도 분석을 알아봅니다. Sep 21, 2023 pm 02:12 PM

PHP의 계산 정렬 알고리즘의 원리와 시간 복잡도 분석을 알아보세요. 계산 정렬은 데이터 범위가 작고 알려진 상황에 적합한 비비교 정렬 알고리즘입니다. 기본 아이디어는 정렬을 달성하기 위해 각 요소의 발생 횟수를 계산한 다음 이를 출력 배열에 채우는 것입니다. 이 기사에서는 계산 정렬의 원리, 단계 및 시간 복잡도 분석을 소개하고 특정 PHP 코드 예제를 제공합니다. 원리: 계수 정렬의 원리는 비교적 간단합니다. 정렬할 배열이 배열이고 요소 범위가 [0,k]라고 가정합니다.

O(n) 시간 복잡도와 O(1) 공간 복잡도로 C 프로그램에서 배열의 왼쪽 회전을 인쇄합니다. O(n) 시간 복잡도와 O(1) 공간 복잡도로 C 프로그램에서 배열의 왼쪽 회전을 인쇄합니다. Sep 10, 2023 pm 03:45 PM

크기 n의 배열과 여러 정수 값이 주어지면 주어진 인덱스 k부터 시작하여 배열을 회전해야 합니다. 아래와 같이 인덱스 k부터 시작하여 배열을 회전하려고 합니다. - 입력 예: arr[]={1,2,3,4,5} K1=1 K2=3 K3=6Output: 23451 45123 23451 알고리즘 STARTStep1-&gt

See all articles