Heim  >  Artikel  >  Backend-Entwicklung  >  PHP einfacher Auswahlsortieralgorithmus zum Lernen und Teilen

PHP einfacher Auswahlsortieralgorithmus zum Lernen und Teilen

小云云
小云云Original
2018-01-08 10:03:371355Durchsuche

Dieser Artikel stellt hauptsächlich den PHP Simple Selection Sort-Algorithmus im Detail vor. Er hat einen gewissen Referenzwert. Ich hoffe, er kann jedem helfen.

Das Beispiel in diesem Artikel teilt den spezifischen Code der einfachen Auswahlsortierung in PHP als Referenz. Der spezifische Inhalt ist wie folgt

Grundidee:

Übergeben Sie n – Vergleich zwischen i Schlüsselwörtern, wählen Sie den Datensatz mit dem kleinsten Schlüsselwort aus n – i + 1 Datensätzen aus und tauschen Sie ihn mit dem i (1 <= i <= n) Datensatz aus und führen Sie dann n-1 Mal aus Die Sortierung der Datensatzreihenfolge ist abgeschlossen.

Algorithmusimplementierung:


<?php

//简单选择排序

//交换函数
function swap(array &$arr,$a,$b){
  $temp = $arr[$a];
  $arr[$a] = $arr[$b];
  $arr[$b] = $temp;
}
//简单选择排序算法
function SelectSort(array &$arr){
  $count = count($arr);
  for($i = 0;$i < $count - 1;$i ++){
    //记录第$i个元素后的所有元素最小值下标
    $min = $i;
    for($j = $i + 1;$j < $count;$j ++){
      if($arr[$j] < $arr[$min]){
        $min = $j;
      }
    }

    if($min != $i){
      swap($arr,$min,$i);
    }
  }
}
$arr = array(9,1,5,8,3,7,4,6,2);
SelectSort($arr);
var_dump($arr);

Komplexitätsanalyse:

in In Durch den einfachen Auswahlsortierungsprozess ist die Anzahl der zu verschiebenden Datensätze relativ gering. Im besten Fall ist der Ausgangszustand der zu sortierenden Datensätze bereits in positiver Reihenfolge und es besteht keine Notwendigkeit, die Datensätze zu verschieben.

Im schlimmsten Fall ist der Anfangszustand der zu sortierenden Datensätze, dass der erste Datensatz der größte ist und die nachfolgenden Datensätze in aufsteigender Reihenfolge angeordnet werden, dann die Anzahl der Datensätze, die sortiert werden müssen bewegt ist höchstens 3 (n-1). Die Anzahl der bei der einfachen Auswahlsortierung erforderlichen Vergleiche hat nichts mit der Anordnung der zu sortierenden Datensatzreihenfolge im Ausgangszustand zu tun. Wenn i=1, sind n-1 Vergleiche erforderlich; wenn i=2, sind n-2 Vergleiche erforderlich usw., die Gesamtzahl der erforderlichen Vergleiche beträgt (n-1)+(n-2)+ ... +2+1=n(n-1)/2, das heißt, die zeitliche Komplexität der Vergleichsoperation beträgt O(n^2) und die zeitliche Komplexität der Verschiebungsoperation beträgt O(n).

Einfache Auswahlsortierung ist eine instabile Sortierung.

Verwandte Empfehlungen:

Detaillierte Erläuterung der Direktauswahlsortierung in der PHP-Sortieralgorithmusreihe

Detaillierte Erläuterung der Bucket-Sortierung im PHP-Sortieralgorithmus series_php skills

Detaillierte Analyse der Methode zur Implementierung des Hill-Sortieralgorithmus in PHP

Das obige ist der detaillierte Inhalt vonPHP einfacher Auswahlsortieralgorithmus zum Lernen und Teilen. 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