Heim  >  Artikel  >  Backend-Entwicklung  >  Häufig verwendete Algorithmen in PHP

Häufig verwendete Algorithmen in PHP

亚连
亚连Original
2018-05-10 09:55:084002Durchsuche

In der täglichen PHP-Entwicklungsumgebung können wir einige häufig verwendete PHP-Algorithmen verwenden, um einige Probleme effektiver zu lösen, oder indem wir einige Algorithmen kennen und die Kernideen dieser Algorithmen beherrschen, können PHP-Probleme leicht gelöst werden.

1. Blasensortierung

Grundidee:

Sortieren Sie das Array von hinten nach vorne (umgekehrte Reihenfolge). Führen Sie mehrere durch Scans, und wenn festgestellt wird, dass die Reihenfolge zweier benachbarter Werte nicht mit den für die Sortierung erforderlichen Regeln übereinstimmt, werden die beiden Werte ausgetauscht. Auf diese Weise bewegen sich die kleineren (größeren) Werte allmählich von hinten nach vorne.

//Blasensortierung

<?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. Schnelle Sortierung

Grundidee:

in Pick ein Element (meistens das erste) im Array als Lineal, scannen Sie das Array einmal und sortieren Sie die Elemente, die kleiner als das Lineal sind, vor dem Lineal, und sortieren Sie alle Elemente, die größer als das Lineal sind, nach dem Lineal und teilen Sie jede Teilfolge separat auf durch Rekursion in kleinere Folgen, bis alle Folgen in der gleichen Reihenfolge sind.

//Schnellsortierung

<?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. Binäre Suche

Grundidee:

Daten übernehmen Die Sortierung erfolgt in aufsteigender Reihenfolge. Der Vergleich beginnt an der mittleren Position der Sequenz. Wenn der aktuelle Positionswert gleich ist, wird in der zweiten Hälfte der Sequenz weiter gesucht gefunden. (Wird verwendet, wenn die Datenmenge groß ist)

//Binäre Suche

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

Das Obige ist ein häufig verwendeter Algorithmus in der PHP-Entwicklung und ich möchte ihn gerne mit Ihnen teilen kann dir helfen.

Verwandte Artikel:

Beispiele für gängige Algorithmen und Datenstrukturen in PHP

Das obige ist der detaillierte Inhalt vonHäufig verwendete Algorithmen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn