Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Kenntnisse: Beispielanalyse für einen schnellen PHP-Sortieralgorithmus

PHP-Kenntnisse: Beispielanalyse für einen schnellen PHP-Sortieralgorithmus

无忌哥哥
无忌哥哥Original
2018-07-12 14:17:111372Durchsuche

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

gefunden werden ) Beginnen Sie zu diesem Zeitpunkt mit der Kopfabfrage und bestimmen Sie, ob

größer als $data[$i] ist. Wenn nicht, $value, setzen Sie die Suche fort, bis eine Koordinate $i++$value größer als

gefunden wird (4) Zu diesem Zeitpunkt schließen sich die Werte von

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

(5) Wiederholen Sie 3 und 4 bis

$i==$j

(6) Zu diesem Zeitpunkt wurden diejenigen, die größer als

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

(7) Das Array wird links und rechts in zwei ungeordnete Arrays unterteilt und dann 1 -6 rekursiv ausgeführt, bis die Array-Länge erreicht ist ist 1

Tipps: Die chinesische Definition der schnellen Sortierung wird unter Baidu klarer sein

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!

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