Heim Backend-Entwicklung Python-Tutorial php使用递归与迭代实现快速排序示例

php使用递归与迭代实现快速排序示例

Jun 06, 2016 am 11:29 AM
快速排序

代码如下:


/**
 * 递归法实现的快速排序
 * @param $seq
 * @return array
 */
function quicksort($seq)
{
    if (count($seq) > 1) {
        $k = $seq[0];
        $x = array();
        $y = array();
        $_size = count($seq); //do not use count($seq) in loop for.
        for ($i = 1; $i             if ($seq[$i]                 $x[] = $seq[$i];
            } else {
                $y[] = $seq[$i];
            }
        }
        $x = quicksort($x);
        $y = quicksort($y);
        return array_merge($x, array($k), $y);
    } else {
        return $seq;
    }
}

/**用迭代实现
 * @param $seq
 * @return array
 */
function quicksortX(&$seq)
{
    $stack = array($seq);
    $sort = array();
    while ($stack) {
        $arr = array_pop($stack);
        if(count($arr)             if (count($arr) == 1) {
                $sort[] = &$arr[0];
            }
            continue;
        }

        $k = $arr[0];
        $x = array();
        $y = array();
        $_size = count($arr);
        for ($i = 1; $i             if ($arr[$i]                 $x[] = &$arr[$i];
            } else {
                $y[] = &$arr[$i];
            }
        }
        !empty($y) && array_push($stack, $y);
        array_push($stack, array($arr[0]));
        !empty($x) && array_push($stack, $x);
    }
    return $sort;
}
//$testArr = array(5545, 5, 6, 7675, 100, 9, 233, 566, 789, 456, 23, 55, 7, 4, 343, 564, 5, 45657, 8, 998, 9, 34, 34, 55, 6, 5, 6433, 67, 6, 6766, 4, 2, 42, 25634, 34343, 3, 3, 454, 4, 65, 6678, 57, 5455);
for($i=0;$i    $testArr[]=mt_rand(0,10000);
}
//var_dump($testArr);
echo count($testArr).'
';
$start=microtime();
echo count(quicksort($testArr)).'
';
echo microtime()-$start.'
';
var_dump(quicksort($testArr));
echo '------------------------------------------------------------------------
';
echo count($testArr).'
';
$start=microtime();
echo count(quicksortX($testArr)).'
';
echo microtime()-$start.'
';
var_dump(quicksortX($testArr));

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So implementieren Sie eine schnelle Sortierung mit Python So implementieren Sie eine schnelle Sortierung mit Python Dec 18, 2023 pm 03:37 PM

So implementieren Sie die schnelle Sortierung in Python: 1. Definieren Sie eine Funktion namens quick_sort und verwenden Sie die rekursive Methode, um die schnelle Sortierung zu implementieren. 2. Überprüfen Sie die Länge des Arrays. Wenn die Länge kleiner oder gleich 1 ist, geben Sie das Array direkt zurück. Andernfalls wird das erste Element als Pivotelement (Pivot) verwendet und dann wird das Array in zwei Unterarrays unterteilt, die kleiner als das Pivotelement und größer als das Pivotelement sind. 3. Verbinden Sie die beiden Unterarrays und das Pivot-Element, um ein sortiertes Array zu bilden.

Tipps und Vorsichtsmaßnahmen zum schnellen Sortieren von Java Tipps und Vorsichtsmaßnahmen zum schnellen Sortieren von Java Feb 25, 2024 pm 10:24 PM

Beherrschen Sie die wichtigsten Fähigkeiten und Vorsichtsmaßnahmen der Java-Schnellsortierung. Die Schnellsortierung (QuickSort) ist ein häufig verwendeter Sortieralgorithmus. Seine Kernidee besteht darin, die zu sortierende Sequenz in zwei unabhängige Teile und alle Elemente in einem zu teilen Wenn ein Teil kleiner als das Basiselement ist und alle Elemente des anderen Teils größer als das Basiselement sind, werden die beiden Teile rekursiv sortiert und schließlich eine geordnete Sequenz erhalten. Obwohl die schnelle Sortierung im Durchschnitt eine Zeitkomplexität von O(nlogn) aufweist, degeneriert sie im schlimmsten Fall zu O(nlogn).

In Java implementierter Schnellsortierungsalgorithmus und seine Effizienzbewertung In Java implementierter Schnellsortierungsalgorithmus und seine Effizienzbewertung Feb 18, 2024 pm 03:38 PM

Die Java-Implementierung der Schnellsortierung und ihre Leistungsanalyse Die Schnellsortierung (QuickSort) ist ein sehr häufig verwendeter und effizienter Sortieralgorithmus. Es handelt sich um eine Divide-and-Conquer-Idee (Teile und herrsche). Dieser Algorithmus unterteilt ein Array in zwei Unterarrays, sortiert dann die beiden Unterarrays entsprechend und wandelt schließlich das gesamte Array in eine geordnete Sequenz um. Die schnelle Sortierung zeigt eine hervorragende Leistung bei der Verarbeitung großer Datenmengen. Die schnelle Sortierung wird rekursiv implementiert. Die Grundidee ist wie folgt: Wählen Sie eine Basis

Optimierungs- und Implementierungsprinzipien: Schnelle Sortierung in Java Optimierungs- und Implementierungsprinzipien: Schnelle Sortierung in Java Feb 20, 2024 pm 01:24 PM

Implementierungsprinzip und Optimierung der Java-Schnellsortierfunktion Die Schnellsortierung ist ein effizienter Sortieralgorithmus. Seine Implementierungsidee besteht darin, ein großes Problem mithilfe der Divide-and-Conquer-Methode in mehrere kleine Probleme aufzuteilen und die Teilprobleme rekursiv zu lösen, um schließlich die Gesamtlösung zu erhalten . . Bei der Schnellsortierung müssen wir ein Benchmark-Element auswählen und das Array in zwei Teile teilen, wobei ein Teil kleiner als das Benchmark-Element und der andere Teil größer als das Benchmark-Element ist. Anschließend werden die beiden Teile noch einmal schnell sortiert, bis nur noch ein Element pro Teilproblem vorhanden ist. Schließlich werden die Lösungen aller Teilprobleme kombiniert, um die Arrays zu erhalten

So sortieren Sie Funktionen in Java schnell So sortieren Sie Funktionen in Java schnell Jan 18, 2024 pm 05:26 PM

Schnellsortierungsmethode: 1. Erstellen Sie eine Java-Beispieldatei. 2. Implementieren Sie den Schnellsortierungsalgorithmus über die QuickSort-Methode. 3. Wählen Sie ein Element im Array als Pivot aus und teilen Sie das Array in zwei Unterarrays auf Das Element mit dem Pivot enthält das erste Element, und das andere Element enthält das Element, das größer als das Hauptelement ist. Anschließend wird der Schnellsortierungsalgorithmus rekursiv auf die beiden Unterarrays angewendet. 4. Sortieren Sie das Array in der Hauptmethode und geben Sie das Ergebnis aus.

Schnelle Sortierung mit Array-Funktionen in PHP Schnelle Sortierung mit Array-Funktionen in PHP Jun 16, 2023 am 08:54 AM

PHP ist eine sehr beliebte Programmiersprache und wird häufig für die Webentwicklung verwendet. In PHP ist Array ein sehr verbreiteter Datentyp und eine sehr leistungsfähige Datenstruktur. Aus diesem Grund bietet PHP viele Array-Funktionen, die Entwicklern bei der Handhabung und Manipulation von Arrays helfen. Dazu gehört die Schnellsortierfunktion, die uns hilft, Arrays schnell zu sortieren. Die Schnellsortierung ist ein gängiger Sortieralgorithmus. Seine Grundidee besteht darin, ein Array durch Vergleich und Austausch in zwei Unterarrays aufzuteilen und diese dann rekursiv durchzuführen

So implementieren Sie einen Schnellsortierungsalgorithmus mit Java So implementieren Sie einen Schnellsortierungsalgorithmus mit Java Sep 19, 2023 am 11:28 AM

So implementieren Sie den Schnellsortierungsalgorithmus in Java. Die Schnellsortierung (QuickSort) ist ein häufig verwendeter und effizienter Sortieralgorithmus. Seine Grundidee besteht darin, die Divide-and-Conquer-Strategie (Divide and Conquer) anzuwenden. Durch die Auswahl jeweils eines Elements als Benchmark-Wert wird das zu sortierende Array in zwei Teile geteilt, wobei ein Teil kleiner als der Benchmark-Wert ist Der andere Teil ist größer als der Benchmark-Wert, und dann werden die beiden Teile separat verarbeitet und schließlich das gesamte Array sortiert. Im Folgenden stellen wir detailliert vor, wie Sie mithilfe der Java-Sprache eine schnelle Sortierung erreichen

Bewertung der Effizienz und Leistung von Java Quick Sort Bewertung der Effizienz und Leistung von Java Quick Sort Feb 19, 2024 pm 10:16 PM

Leistungsanalyse und Vergleich von Java Quick Sort Quick Sort (QuickSort) ist ein vergleichsbasierter Sortieralgorithmus, der aufgrund seiner schnellen Ausführungsgeschwindigkeit und guten Leistung häufig in der tatsächlichen Entwicklung verwendet wird. In diesem Artikel wird eine Leistungsanalyse des Schnellsortierungsalgorithmus in Java durchgeführt und dieser mit anderen gängigen Sortieralgorithmen verglichen. Prinzip des Schnellsortierungsalgorithmus: Die Schnellsortierung übernimmt die Idee der „Teile-und-Herrsche“-Methode. Durch die Aufteilung der zu sortierenden Daten in zwei unabhängige Teile werden die linken und rechten Teilsequenzen rekursiv sortiert, um die Ordnung der gesamten Sequenz zu erreichen.

See all articles