Heim Backend-Entwicklung PHP-Problem Was sind die am häufigsten verwendeten Algorithmen in PHP?

Was sind die am häufigsten verwendeten Algorithmen in PHP?

Sep 17, 2019 pm 02:29 PM
php

Es gibt vier grundlegende Algorithmen im Zusammenhang mit PHP, nämlich: Blasensortierung, Schnellsortierung, Auswahlsortierung, Einfügungssortierung

Was sind die am häufigsten verwendeten Algorithmen in PHP?

1: Blasensortierung Methode

Einführung: (Empfohlenes Lernen: PHP-Programmierung vom Anfänger bis zum Experten)

Bubble Sorting ist ein einfacher Sortieralgorithmus. Es durchläuft wiederholt die zu sortierende Sequenz, vergleicht nacheinander die beiden Elemente und vertauscht sie, wenn sie in der falschen Reihenfolge sind.

Die Arbeit des Besuchs der Sequenz wird wiederholt, bis kein Austausch mehr erforderlich ist, was bedeutet, dass die Sequenz sortiert wurde. Der Name dieses Algorithmus kommt von der Tatsache, dass immer kleinere Elemente durch Austauschen langsam an die Spitze des Arrays „schweben“.

Schritte:

①: Benachbarte Elemente vergleichen. Wenn das erste größer als das zweite ist, tauschen Sie beide aus

②: Machen Sie dasselbe für jedes Paar benachbarter Elemente, beginnend mit dem ersten Paar und endend mit dem letzten Paar. Zu diesem Zeitpunkt sollte das letzte Element die größte Zahl sein.

③: Wiederholen Sie die obigen Schritte für alle Elemente außer dem letzten.

④: Wiederholen Sie die obigen Schritte jedes Mal für immer weniger Elemente, bis kein Zahlenpaar mehr vorhanden ist zum Vergleichen

spezifischer Code:

$arr=array(1,43,54,62,21,66,32,78,36,76,39);
  function bubbleSort ($arr)
  {
  $len = count($arr);
  //该层循环控制 需要冒泡的轮数
  for ($i=1; $i<$len; $i++) {
  //该层循环用来控制每轮 冒出一个数 需要比较的次数
  for ($k=0; $k<$len-$i; $k++) {
  if($arr[$k] > $arr[$k+1]) {
  $tmp = $arr[$k+1]; // 声明一个临时变量
  $arr[$k+1] = $arr[$k];
  $arr[$k] = $tmp;
  }
  }
  }
  return $arr;
  }
Nach dem Login kopieren

2: Auswahlsortiermethode

Auswahlsortierung ist ein einfacher und intuitiver Sortieralgorithmus . Das Funktionsprinzip lautet wie folgt: Suchen Sie zunächst das kleinste Element in der unsortierten Sequenz, speichern Sie es an der Startposition der sortierten Sequenz und suchen Sie dann weiterhin das kleinste Element aus den verbleibenden unsortierten Elementen. Platzieren Sie es dann am Ende der Sortierreihenfolge. Und so weiter, bis alle Elemente sortiert sind.

Spezifischer Code:

  //实现思路 双重循环完成,外层控制轮数,当前的最小值。内层 控制的比较次数
  function select_sort($arr) {
  //$i 当前最小值的位置, 需要参与比较的元素
  for($i=0, $len=count($arr); $i<$len-1; $i++) {
 //先假设最小的值的位置
  $p = $i;
  //$j 当前都需要和哪些元素比较,$i 后边的。
  for($j=$i+1; $j<$len; $j++) {
  //$arr[$p] 是 当前已知的最小值
 if($arr[$p] > $arr[$j]) {
 //比较,发现更小的,记录下最小值的位置;并且在下次比较时,应该采用已知的最小值进行比较。
 $p = $j;
 }
 }
 //已经确定了当前的最小值的位置,保存到$p中。
 //如果发现 最小值的位置与当前假设的位置$i不同,则位置互换即可
 if($p != $i) {
 $tmp = $arr[$p];
 $arr[$p] = $arr[$i];
 $arr[$i] = $tmp;
 }
 }
 //返回最终结果
 return $arr;
 }
Nach dem Login kopieren

3: Einfügungssortierung

Die Algorithmusbeschreibung der Einfügungssortierung ist ein einfacher und intuitiver Sortieralgorithmus. Es funktioniert, indem es eine geordnete Sequenz erstellt. Bei unsortierten Daten wird eine sortierte Sequenz von hinten nach vorne durchsucht, um die entsprechende Position zu finden und einzufügen.

Bei der Implementierung der Einfügungssortierung wird normalerweise die In-Place-Sortierung verwendet (d. h. eine Sortierung, die nur O(1) zusätzlichen Platz benötigt, daher ist dies während des Scanvorgangs von hinten nach vorne erforderlich). um die Sortierung wiederholt zu sortieren. Die letzten Elemente werden schrittweise nach hinten verschoben, um Platz für das Einfügen der neuesten Elemente zu schaffen.

Schritte:

① Beginnend mit dem ersten Element, das als sortiert betrachtet werden kann

② Nehmen Sie das nächste Element danach heraus wurde sortiert. Scannen Sie die Elementsequenz von hinten nach vorne

③ Wenn das Element (sortiert) größer als das neue Element ist, verschieben Sie das Element an die nächste Position

④ Wiederholen Sie Schritt ③, bis Sie Finden Sie das sortierte Element ist kleiner oder gleich der Position des neuen Elements

⑤ Fügen Sie das neue Element an der Position ein

⑥ Wiederholen Sie Schritt ②

Spezifischer Code:

  function insert_sort($arr)
  {
  $len=count($arr);
  for($i=1; $i<$len; $i++) {
 //获得当前需要比较的元素值。
  $tmp = $arr[$i];
  //内层循环控制 比较 并 插入
  for($j=$i-1; $j>=0; $j--) {
  //$arr[$i];//需要插入的元素; $arr[$j];//需要比较的元素 
    if($tmp < $arr[$j]) {
 //发现插入的元素要小,交换位置
 //将后边的元素与前面的元素互换
     $arr[$j+1] = $arr[$j];
 //将前面的数设置为 当前需要交换的数
     $arr[$j] = $tmp;
     } else {
 //如果碰到不需要移动的元素
 //由于是已经排序好是数组,则前面的就不需要再次比较了。
     break;
     }
 }
 }
 //将这个元素 插入到已经排序好的序列内。
 //返回
 return $arr;
 }
Nach dem Login kopieren

4: Schnelle Sortierung

Einführung:

Schnelle Sortierung ist eine Methode, die von entwickelt wurde Tony-Hall-Sortieralgorithmus. Im Durchschnitt erfordert das Sortieren von n Elementen O(n log n) Vergleiche.

Im schlimmsten Fall sind O(n2)-Vergleiche erforderlich, aber diese Situation ist ungewöhnlich. Tatsächlich ist Quicksort oft deutlich schneller als andere O(n log n)-Algorithmen, da seine innere Schleife auf den meisten Architekturen effizient implementiert werden kann und für die meisten realen Daten Entwurfsentscheidungen treffen kann, die die Möglichkeit einer quadratischen Zeit, die benötigt wird, reduzieren.

Schritte:

① Wählen Sie ein Element aus der Sequenz aus, das als „Grundlinie“ bezeichnet wird.

② Wiederholen Sie die Sortierreihenfolge. Alle Elemente sind besser als der Basiswert. Kleine Elemente werden vor der Basis platziert, und alle Elemente, die größer als die Basis sind, werden hinter der Basis platziert (die gleiche Anzahl kann auf beiden Seiten platziert werden). Nachdem diese Partition beendet wurde, befindet sich die Basis in der Mitte der Sequenz. Dies wird als Partitionsoperation bezeichnet.

③ Rekursives Sortieren des Subarrays von Elementen, die kleiner als der Basislinienwert sind, und des Subarrays von Elementen, die größer als der Basislinienwert sind

Spezifischer Code:

  function quick_sort($arr)
  {
  //判断参数是否是一个数组
  if(!is_array($arr)) return false;
  //递归出口:数组长度为1,直接返回数组
  $length = count($arr);
  if($length<=1) return $arr;
  //数组元素有多个,则定义两个空数组
  $left = $right = array();
 //使用for循环进行遍历,把第一个元素当做比较的对象
 for($i=1; $i<$length; $i++)
 {
 //判断当前元素的大小
 if($arr[$i]<$arr[0]){
 $left[]=$arr[$i];
 }else{
 $right[]=$arr[$i];
 }
 }
 //递归调用
 $left=quick_sort($left);
 $right=quick_sort($right);
 //将所有的结果合并
 return array_merge($left,array($arr[0]),$right);
 }
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWas sind die am häufigsten verwendeten Algorithmen in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

CakePHP erstellt Validatoren CakePHP erstellt Validatoren Sep 10, 2024 pm 05:26 PM

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

CakePHP-Protokollierung CakePHP-Protokollierung Sep 10, 2024 pm 05:26 PM

Die Anmeldung bei CakePHP ist eine sehr einfache Aufgabe. Sie müssen nur eine Funktion verwenden. Sie können Fehler, Ausnahmen, Benutzeraktivitäten und von Benutzern durchgeführte Aktionen für jeden Hintergrundprozess wie Cronjob protokollieren. Das Protokollieren von Daten in CakePHP ist einfach. Die Funktion log() wird bereitgestellt

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

CakePHP-Kurzanleitung CakePHP-Kurzanleitung Sep 10, 2024 pm 05:27 PM

CakePHP ist ein Open-Source-MVC-Framework. Es erleichtert die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich. CakePHP verfügt über eine Reihe von Bibliotheken, um die Überlastung der häufigsten Aufgaben zu reduzieren.

See all articles