>백엔드 개발 >PHP 튜토리얼 >PHP에서 일반적으로 사용되는 알고리즘

PHP에서 일반적으로 사용되는 알고리즘

亚连
亚连원래의
2018-05-10 09:55:084061검색

일상적인 PHP 개발 환경에서는 일반적으로 사용되는 일부 PHP 알고리즘을 사용하여 일부 문제를 보다 효과적으로 해결할 수 있습니다. 또는 일부 알고리즘을 알고 이러한 알고리즘의 핵심 아이디어를 숙지하면 PHP 문제를 쉽게 해결할 수 있습니다.

1. 버블 정렬

기본 아이디어:

배열을 뒤에서 앞으로(역순으로) 여러 번 스캔하여 인접한 두 값의 순서를 찾습니다. 정렬 요구 사항과 일치합니다. 규칙이 일치하지 않으면 두 값이 교환됩니다. 이런 식으로 작은(큰) 값이 뒤에서 앞으로 점차 이동하게 됩니다.

//버블 정렬

<?php
 
  function mysort($arr)
  {
    for($i = 0; $i < count($arr); $i++)
    {
      $isSort = false;
      for ($j=0; $j< count($arr) - $i - 1; $j++) 
      {
        if($arr[$j] < $arr[$j+1])
        {
          $isSort = true;
          $temp = $arr[$j];
          $arr[$j] = $arr[$j+1];
          $arr[$j+1] = $temp ;
        }
      }
      if($isSort)
      {
        break;
      }
    }
    return $arr;
  }
 
  $arr = array(3,1,2);
  var_dump(mysort($arr));
?>

2. 빠른 정렬

기본 아이디어:

배열의 요소(주로 첫 번째 요소)를 눈금자로 선택하면 배열이 더 작아집니다. 요소는 눈금자 앞에 정렬되고 눈금자보다 큰 모든 요소는 눈금자 뒤에 정렬됩니다. 모든 시퀀스가 ​​​​동일한 순서가 될 때까지 각 하위 시퀀스는 더 작은 시퀀스로 나뉩니다.

//Quick sort

<?php
  //快速排序
    function quick_sort($arr) 
    {
      //先判断是否需要继续进行
      $length = count($arr);
      if($length <= 1) 
      {
        return $arr;
      }
     
      $base_num = $arr[0];//选择一个标尺 选择第一个元素
 
      //初始化两个数组
      $left_array = array();//小于标尺的
      $right_array = array();//大于标尺的
      for($i=1; $i<$length; $i++) 
      {      //遍历 除了标尺外的所有元素,按照大小关系放入两个数组内
        if($base_num > $arr[$i]) 
        {
          //放入左边数组
          $left_array[] = $arr[$i];
        } 
        else
        {
          //放入右边
          $right_array[] = $arr[$i];
        }
      }
      //再分别对 左边 和 右边的数组进行相同的排序处理方式
      //递归调用这个函数,并记录结果
      $left_array = quick_sort($left_array);
      $right_array = quick_sort($right_array);
      //合并左边 标尺 右边
      return array_merge($left_array, array($base_num), $right_array);
    }
 
    $arr = array(3,1,2);
    var_dump(quick_sort($arr));
 
?>

3. 이진 검색

기본 아이디어:

주어진 값 x에 대해 데이터가 오름차순으로 정렬되어 있다고 가정합니다. 시퀀스의 중간 위치에서 비교를 시작합니다. 현재 위치 값이 x와 같으면 검색이 성공한 것입니다. x가 현재 위치 값보다 작으면 시퀀스의 전반부에서 검색하고, x가 현재 위치 값보다 크면 검색을 계속합니다. 발견될 때까지 시퀀스의 후반부. (데이터의 양이 많을 때 사용)

//이진 검색

<?php
  //二分查找
  function bin_search($arr,$low,$high,$k)
  {
    if($low <= $high)
    {
      $mid = intval(($low + $high)/2);
      if($arr[$mid] == $k)
      {
        return $mid;
      }
      else if($k < $arr[$mid])
      {
        return bin_search($arr,$low,$mid-1,$k);
      }
      else
      {
        return bin_search($arr,$mid+1,$high,$k);
      }
    }
    return -1;
  }
 
  $arr = array(1,2,3,4,5,6,7,8,9,10);
 
  print(bin_search($arr,0,9,3));
?>

위는 PHP 개발에서 가장 일반적으로 사용되는 알고리즘으로 여러분께 공유해 드리고 있으니 많은 분들께 도움이 되었으면 좋겠습니다.

관련 기사:

PHP 일반 알고리즘 및 데이터 구조 예제

위 내용은 PHP에서 일반적으로 사용되는 알고리즘의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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