Heim  >  Artikel  >  Backend-Entwicklung  >  Eine Erklärung, wie man die Basissortierung in PHP implementiert

Eine Erklärung, wie man die Basissortierung in PHP implementiert

jacklove
jackloveOriginal
2018-07-07 17:47:191641Durchsuche

In diesem Artikel wird hauptsächlich die Methode zur Implementierung der Radix-Sortierung in PHP vorgestellt und die Prinzipien, Implementierungsmethoden und zugehörigen Betriebstechniken der Radix-Sortierung anhand von Beispielen analysiert

Dies Der Artikel beschreibt die PHP-Beispiele zur Implementierung der Radix-Sortierung. Teilen Sie es allen als Referenz mit. Die Details lauten wie folgt:

Die Kardinalsortierung basiert auf dem Wert jedes Schlüsselworts im Schlüsselwort und wird durch mehrere Durchgänge von „Verteilung“ und „Sammlung“ sortiert die sortierten N Elemente.

Sie möchten anhand eines konkreten Beispiels zeigen, wie die Basissortierung durchgeführt wird.

Angenommen, eine Anfangssequenz ist: R {50, 123, 543, 187, 49, 30, 0, 2, 11, 100}.

Wir wissen, dass die Basis jeder Ziffer jeder arabischen Zahl durch 0~9 dargestellt wird.

Also könnten wir 0~9 genauso gut als 10 Eimer betrachten.

Wir klassifizieren zunächst nach den einstelligen Zahlen der Folge und unterteilen sie in bestimmte Buckets. Beispiel: R[0] = 50, die einzelne Ziffer ist 0, speichern Sie diese Zahl im Bucket mit der Nummer 0.

Nach der Klassifizierung nehmen wir alle Zahlen aus jedem Eimer in der Reihenfolge von Nummer 0 bis Nummer 9 heraus.

Zu diesem Zeitpunkt ist die erhaltene Sequenz eine Sequenz mit einem steigenden Trend im einstelligen Bereich.

Nach einzelnen Ziffern sortiert: {50, 30, 0, 100, 11, 2, 123, 543, 187, 49}.

Als nächstes können Sie die Zehner- und Hunderterstellen auf diese Weise sortieren, und schließlich erhalten Sie die sortierte Reihenfolge.

<?php
/**基数排序**/
/*
* 获取第几位上的数字
*
*百位数 = 2345%1000/100
*/
function getN($num,$N){
  $value = 10;
  for($i=1;$i<$N;$i++){
    $value = $value * 10;
  }
  $M = (int)(($num % $value /($value/10)));
  return $M;
}
/*
*/
function paixu($arr)
{
  $flag = 1;//该次位数上是否全为0标志位,全为0 flag=0
  for($M=1;$flag!=0;$M++)
  {
    $flag = 0;
    if($M > 1){
      $m = 0;
      for($j=0;$j<10;$j++){
        for($k=0;$k<count($b[$j]);$k++){
          if($b[$j][$k]!=0)
          $arr[$m++] = $b[$j][$k];//将容器中的数按序取出,进行下一次排序
        }
      }
      $b = array();//再给b附新值前要清空数组中原有的数据
    }
    for($i=0;$i<count($arr);$i++)
    {
      $thisNum = getN($arr[$i],$M);
      if($thisNum!=0) $flag = 1;
      $b[$thisNum][] = $arr[$i];//将数组中的数放入容器中
    }
  }
  print_r($arr);
  //var_dump($b);
}
/**基数排序**结束**/
paixu(array(65,3,45,6,7,8,31,100,1000,1234))
?>

Laufergebnis:


Code kopieren Der Code lautet wie folgt :

Array ( [0] => 3 [1] => 6 [2] => 7 [3] => 8 [4] => 31 [5] => 45 [6 ] => 65 [7] => 1000 [9] => Wird verwendet, um doppelte Nummern, Suchintervallnummern usw. zu finden.

Der Code ist nicht wichtig (mein Code muss noch verbessert werden), die Idee ist der Schlüssel

PS: Hier ist ein weiterer Artikel über Sortier-Demonstrationstools als Referenz:

Online-Animationsdemonstration des Algorithmus-Prozesses Einfügen/Auswahl/Blase/Zusammenführung/Hill/Schnellsortierung Werkzeuge:

http://tools.jb51.net/aideddesign/paixu_ys
Artikel, die Sie interessieren könnten:

PHP basiert auf Reflexion. Erklärung der Methode der automatischen Abhängigkeitsinjektion durch den Mechanismus

Während PHP in Bearbeitung ist – detaillierte Erklärung von Variablen und Erklärung des dynamischen Einfügens von Variablen in Strings

Detaillierte Erläuterung der Verwendung der Telegram-Schnittstelle zur Implementierung der kostenlosen Nachrichtenbenachrichtigungsfunktion in PHP


Das obige ist der detaillierte Inhalt vonEine Erklärung, wie man die Basissortierung in PHP implementiert. 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