Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erklärung zur Implementierung der Radix-Sortierung in PHP_php-Kenntnissen

Ausführliche Erklärung zur Implementierung der Radix-Sortierung in PHP_php-Kenntnissen

韦小宝
韦小宝Original
2017-12-05 09:17:361307Durchsuche

Dieser Artikel stellt hauptsächlich die Methode von PHP zur Implementierung der Radix-Sortierung vor. Er analysiert das Prinzip, die Implementierungsmethode und die damit verbundenen PHP-Betriebsfähigkeiten in Form von Beispielen Artikel beschreibt PHPWie man die Basissortierung implementiert. Teilen Sie es als Referenz mit allen, schauen wir es uns an!

Die Radix-Sortierung basiert auf dem Wert jedes Bits im Schlüsselwort und wird durch mehrere Durchgänge der „Verteilung“ und „Sammlung“ der sortierten N Elemente sortiert.

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 sortieren: {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))
?>


Laufergebnisse:


Code kopieren Der Code lautet wie folgt:

Array ( [0] => 3 [1] => 6 [2] => 7 [3] => 8 [4] => ; 31 [ 5] => 65 [7] => 1000 [9] => doppelte Zahlen finden, nach der Anzahl der Intervalle suchen usw. Tatsächlich ist der Code nicht wichtig (mein Code muss noch verbessert werden), die Idee ist der Schlüssel

Verwandt Empfehlungen:

PHP-Sortierungsimplementierung

PHP-Sortierung, zweidimensionaler Array, alphabetischer Sortierungsimplementierungscode

PHP-Sortieralgorithmus (Blasensortierung, Schnellsortierung)_PHP-Tutorial

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung zur Implementierung der Radix-Sortierung in PHP_php-Kenntnissen. 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