Maison  >  Article  >  développement back-end  >  Algorithmes couramment utilisés en PHP

Algorithmes couramment utilisés en PHP

亚连
亚连original
2018-05-10 09:55:084016parcourir

Dans l'environnement de développement PHP quotidien, nous pouvons utiliser certains algorithmes PHP couramment utilisés pour résoudre certains problèmes plus efficacement, ou en connaissant certains algorithmes et en maîtrisant les idées de base de ces algorithmes, les problèmes PHP peuvent être facilement résolus.

1. Tri des bulles

Idée de base :

Trier le tableau de l'arrière vers l'avant (ordre inverse) Effectuer plusieurs scans, et lorsqu'il s'avère que l'ordre de deux valeurs adjacentes​​est incompatible avec les règles requises pour le tri, les deux valeurs​​sont échangées. De cette façon, les valeurs plus petites (plus grandes) se déplaceront progressivement de l'arrière vers l'avant.

//Tri à bulles

<?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. Tri rapide

Idée de base :

Sélectionnez un élément du tableau (principalement le premier) comme règle, numérisez le tableau une fois et triez les éléments plus petits que la règle avant la règle, et triez tous les éléments plus grands que la règle après la règle, et récurez chaque sous-séquence Divisez en séquences plus petites jusqu'à ce que toutes les séquences soient dans le même ordre.

//Tri rapide

<?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. Recherche binaire

Idée de base :

Supposons que les données soient triées par ordre croissant. Pour une valeur x donnée, la comparaison commence à partir de la position médiane de la séquence. Si la valeur de position actuelle est égale à x, la recherche réussit si x est supérieur à la valeur actuelle. valeur de position, continuez la recherche dans la seconde moitié de la séquence jusqu'à ce qu'elle soit trouvée. (Utilisé lorsque la quantité de données est importante)

//Recherche binaire

<?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));
?>

Les algorithmes ci-dessus sont les plus couramment utilisés dans le développement PHP et j'aimerais les partager avec vous. J'espère qu'ils pourront vous aider.

Articles connexes :

Exemples d'algorithmes et de structures de données courants en PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn