Es gibt vier grundlegende Algorithmen im Zusammenhang mit PHP, nämlich: Blasensortierung, Schnellsortierung, Auswahlsortierung, Einfügungssortierung
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; }
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; }
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; }
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); }
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!