Heim >Backend-Entwicklung >PHP-Problem >So sortieren Sie ein Array in PHP, ohne Funktionen zu verwenden

So sortieren Sie ein Array in PHP, ohne Funktionen zu verwenden

PHPz
PHPzOriginal
2023-04-27 09:03:10709Durchsuche

PHP ist eine weit verbreitete Programmiersprache mit vielen leistungsstarken Funktionen zur Erleichterung der Array-Sortierung. In einigen Fällen müssen wir das Array jedoch möglicherweise ohne Verwendung einer Funktion sortieren. In diesem Artikel besprechen wir, wie man ein Array in PHP sortiert, ohne Funktionen zu verwenden.

1. Blasensortierungsmethode

Die Blasensortierung ist ein einfacher Sortieralgorithmus. Seine grundlegende Funktionsweise besteht darin, benachbarte Elemente zu vergleichen und sie auszutauschen, wenn sie in der falschen Reihenfolge sind. Für ein Array der Länge n werden höchstens n-1 Runden von Vergleichs- und Austauschoperationen durchgeführt. Nach jeder Runde werden die Endelemente des ungeordneten Bereichs zu den Kopfelementen des geordneten Bereichs.

Das Folgende ist der Code zum Implementieren der Blasensortierung mit PHP, am Beispiel der aufsteigenden Reihenfolge:

function bubbleSort(&$arr){
    $len = count($arr); //获取数组长度
    for($i=0;$i<$len-1;$i++){ //需要比较n-1轮
        for($j=0;$j<$len-$i-1;$j++){ //每一轮需要比较n-i-1次
            if($arr[$j]>$arr[$j+1]){ //如果前一个元素大于后一个元素,交换位置
                $tmp = $arr[$j+1];
                $arr[$j+1] = $arr[$j];
                $arr[$j] = $tmp;
            }
        }
    }
}

Die zeitliche Komplexität des obigen Codes beträgt O(n^2), was nicht der optimale Sortieralgorithmus ist. In einigen Fällen ist die Codeimplementierung der Blasensortierung jedoch relativ einfach und kann zum Sortieren kleiner Arrays verwendet werden.

2. Auswahlsortiermethode

Die Auswahlsortierung ist ein einfacher Sortieralgorithmus. Seine Grundoperation besteht darin, das kleinste (oder größte) Element aus der zu sortierenden Sequenz auszuwählen und es am Ende der sortierten Sequenz einzufügen. Für ein Array der Länge n sind n-1 Vergleichs- und Austauschoperationen erforderlich. Nach jeder Vergleichsrunde werden die Kopfelemente des ungeordneten Bereichs zu Endelementen des geordneten Bereichs.

Das Folgende ist der Code zum Implementieren der Auswahlsortierung mit PHP, am Beispiel der aufsteigenden Reihenfolge:

function selectSort(&$arr){
    $len = count($arr);//获取数组长度
    for($i=0;$i<$len-1;$i++){//需要比较n-1轮
        $minIndex=$i;//用来存储最小元素的下标
        for($j=$i+1;$j<$len;$j++){
            if($arr[$j]<$arr[$minIndex]){//如果有小于当前最小值的元素,更新minIndex
                $minIndex=$j;
            }
        }
        //将最小元素和无序区域的头部元素交换位置
        $tmp = $arr[$minIndex];
        $arr[$minIndex] = $arr[$i];
        $arr[$i] = $tmp;
    }
}

Die zeitliche Komplexität des obigen Codes beträgt O(n^2), was nicht der optimale Sortieralgorithmus ist. Die Auswahlsortierungsmethode ist jedoch einfach zu implementieren und leicht zu verstehen und kann zum Sortieren kleiner Arrays verwendet werden.

3. Einfügungssortierungsmethode

Einfügungssortierung ist ein einfacher Sortieralgorithmus. Seine grundlegende Operation besteht darin, ein Datenelement in eine bereits sortierte geordnete Sequenz einzufügen. Für ein Array der Länge n sind n-1 Vergleichsrunden und Verschiebungsoperationen erforderlich. Nach jeder Vergleichsrunde werden die Kopfelemente des ungeordneten Bereichs zu den Endelementen des geordneten Bereichs.

Das Folgende ist der Code zum Implementieren der Einfügungssortierung mit PHP, am Beispiel der aufsteigenden Reihenfolge:

function insertSort(&$arr){
    $len = count($arr);//获取数组长度
    for($i=1;$i<$len;$i++){//需要将n-1个元素插入到有序区域
        $tmp = $arr[$i];//用一个临时变量存储待插入的元素
        for($j=$i-1;$j>=0;$j--){//将tmp插入到合适的位置
            if($tmp<$arr[$j]){
                $arr[$j+1]=$arr[$j];//将大于tmp的元素向后移动一位
            }else{
                break;//找到了合适的位置,退出循环
            }
        }
        $arr[$j+1]=$tmp;//将tmp插入到合适的位置
    }
}

Die zeitliche Komplexität des obigen Codes beträgt O(n^2), was nicht der optimale Algorithmus ist. Die Einfügesortiermethode ist jedoch einfach zu implementieren und kann zum Sortieren kleiner Arrays und teilweise geordneter Arrays verwendet werden.

4. Die Schnellsortierungsmethode ist ein effizienter Sortieralgorithmus. Die Grundidee besteht darin, das Array durch eine Sortierung in zwei Teilsequenzen zu unterteilen Sind die rechten Teilsequenzen kleiner als das Referenzelement und beide größer als das Basiselement, werden die linken und rechten Teilsequenzen rekursiv sortiert und schließlich werden die beiden geordneten Teilsequenzen zu einer geordneten Sequenz zusammengeführt. Die Zeitkomplexität der schnellen Sortierung beträgt O(nlogn).

Das Folgende ist der Code zum Implementieren einer schnellen Sortierung mit PHP am Beispiel der aufsteigenden Reihenfolge:

function quickSort(&$arr,$left,$right){
    if($left<$right){
        $i=$left;$j=$right;//选择一个基准元素,初始化左右指针
        $pivot=$arr[$i];//将基准元素存储到临时变量pivot
        while($i<$j){
            while($i<$j && $arr[$j]>=$pivot){//逆序查找比基准元素小的元素
                $j--;
            }
            if($i<$j){
                $arr[$i++]=$arr[$j];
            }
            while($i<$j && $arr[$i]<=$pivot){//顺序查找比基准元素大的元素
                $i++;
            }
            if($i<$j){
                $arr[$j--]=$arr[$i];
            }
        }
        $arr[$i]=$pivot;//将基准元素插入到左右子序列的交界处
        quickSort($arr,$left,$i-1);//对左子序列递归排序
        quickSort($arr,$i+1,$right);//对右子序列递归排序
    }
}

Die zeitliche Komplexität des obigen Codes beträgt O(nlogn), was einen besseren Sortieralgorithmus darstellt. Der Implementierungsprozess der schnellen Sortierung ist komplizierter, bietet jedoch die beste Leistung und kann zum Sortieren von Arrays unterschiedlicher Größe verwendet werden.

Zusammenfassung:

Das Obige stellt vier Methoden zum Sortieren von Arrays ohne Verwendung von PHP-Funktionen vor: Blasensortierung, Auswahlsortierung, Einfügungssortierung und Schnellsortierung. In praktischen Anwendungen können wir einen geeigneten Sortieralgorithmus basierend auf der Größe des Arrays und den Sortieranforderungen auswählen. Es ist zu beachten, dass diese Algorithmen zwar nicht auf den integrierten Funktionen von PHP basieren, jedoch bei der tatsächlichen Verwendung Probleme wie Ausführungszeit und Speichernutzung berücksichtigt werden müssen.

Das obige ist der detaillierte Inhalt vonSo sortieren Sie ein Array in PHP, ohne Funktionen zu verwenden. 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