Heim > Artikel > Backend-Entwicklung > PHP-Kenntnisse: Beispielanalyse für einen schnellen PHP-Sortieralgorithmus
Dieser Artikel stellt hauptsächlich den PHP-Schnellsortierungsalgorithmus vor und analysiert die Prinzipien, Schritte und zugehörigen PHP-Definitionen und Verwendungstechniken der Schnellsortierung in Form von Beispielen. Freunde in Not können sich darauf beziehen.
Die Beispiele In diesem Artikel wird der PHP-Schnellsortierungsalgorithmus beschrieben. Geben Sie es als Referenz an alle weiter. Die Details lauten wie folgt:
Schnellsortierung: Wählen Sie im ungeordneten Array $data einen beliebigen Wert als Vergleichswert aus, definieren Sie i als Head-Retrieval-Index und j als Tail Abrufindex,
Algorithmusschritte:
(1) Kontrastwerte initialisieren $value=$data[0]
, $i=1
, $j=count($data)-1
( 2) Beginnen Sie zunächst mit dem Abruf und bestimmen Sie, ob $data[$j]
kleiner als $value
ist. Wenn nicht, fahren Sie mit dem Abruf fort, bis Koordinaten $j--
$value
kleiner als
größer als $data[$i]
ist. Wenn nicht, $value
, setzen Sie die Suche fort, bis eine Koordinate $i++
$value
größer als
und $data[$j]
gegenseitig aus. Swap, das heißt, setzen Sie den Wert, der größer als $data[$i]
ist, rechts und den Wert, der kleiner als $value
ist, links $value
$i==$j
sind, rechts platziert und diejenigen, die kleiner als $value
sind Die Koordinatenposition in der Mitte wird als $value
bestimmt, der Mittelwert ist $i
und der Wert von $value
ist der Wertaustausch $data[$i]
, da der Mittelwert $data[0]
ist , Sie müssen $value
zur mittleren Koordinate des Arrays verschieben $value
Code:
<?php header("Content-type: text/html; charset=utf-8"); function quickSort($data, $startIndex, $endIndex){ if($startIndex < $endIndex){ $value = $data[$startIndex]; // 对比值 $startT = $startIndex + 1; $endT = $endIndex; while ($startT != $endT) { // 找到比对比值小的坐标 while ($data[$endT] > $value && $endT > $startT){ $endT--; } // 找到比对比值大的左边 while ($data[$startT] < $value && $startT < $endT){ $startT++; } if($endT > $startT){ $temp =$data[$startT]; $data[$startT] = $data[$endT]; $data[$endT] = $temp; } } // 防止数组已经排序好的情况 if($data[$startT] < $value){ $data[$startIndex] = $data[$startT]; $data[$startT] = $value; } $data = quickSort($data, $startIndex, $startT - 1); $data = quickSort($data, $startT + 1, $endIndex); return $data; }else{ return $data; } } $data = array(10, 5, 30, 22, 1, 42, 14, 34, 8, 13, 28, 36, 7); $data = quickSort($data, 0, count($data) - 1); var_dump($data);
Laufergebnis:
array(13) { [0]=> int(1) [1]=> int(5) [2]=> int(7) [3]=> int(8) [4]=> int(10) [5]=> int(13) [6]=> int(14) [7]=> int(22) [8]=> int(28) [9]=> int(30) [10]=> int(34) [11]=> int(36) [12]=> int(42) }
Das obige ist der detaillierte Inhalt vonPHP-Kenntnisse: Beispielanalyse für einen schnellen PHP-Sortieralgorithmus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!