Welchen Sortieralgorithmus verwendet qsort?

8

Ich kann keine Informationen darüber finden, welcher Sortieralgorithmus C qsort function verwendet.

Ist es Quicksort? Es wird nicht im Menschen erwähnt.

    
good_evening 13.11.2012, 00:28
quelle

3 Antworten

15

Die Implementierung von qsort wurde nicht angegeben: Eine Implementierung kann einen beliebigen Sortieralgorithmus verwenden. Interessanterweise muss die Sortierung nicht stabil sein und es gibt keine Komplexitätsanforderung.

Die gesamte Spezifikation von qsort (C11 §7.22.5.2) lautet wie folgt:

  

Die Funktion qsort

     

Übersicht

%Vor%      

Beschreibung

     

Die Funktion qsort sortiert ein Array von nmemb -Objekten, deren erstes Element ist   gezeigt von base . Die Größe jedes Objekts wird durch size angegeben.

     

Der Inhalt des Arrays wird in aufsteigender Reihenfolge nach einer Vergleichsfunktion sortiert, auf die compar zeigt, die mit zwei Argumenten aufgerufen wird, die auf die zu vergleichenden Objekte zeigen. Die Funktion soll eine Ganzzahl kleiner als, gleich oder größer als Null zurückgeben, wenn das erste Argument als kleiner, gleich oder größer als das zweite betrachtet wird.

     

Wenn zwei Elemente als gleichwertig verglichen werden, ist ihre Reihenfolge im resultierenden sortierten Array nicht spezifiziert.

     

Gibt

zurück      

Die Funktion qsort gibt keinen Wert zurück.

    
James McNellis 13.11.2012, 00:31
quelle
2

Theoretisch ist qsort nur bis zu den Rückgabewerten und den Aufrufwerten von qsort und bsort definiert. Hier sind ISO-Standardreferenzen.

In der Praxis verwendet es normalerweise quicksort .

    
the wolf 13.11.2012 00:35
quelle
1

In Ergänzung zu James McNellis Zitat des Standards ist es bemerkenswert, dass GNU's libc Dokumentation sagt das

  

Die Funktion qsort leitet ihren Namen von der Tatsache ab, dass sie ursprünglich mit dem "Quick Sort" -Algorithmus implementiert wurde.

und dass es sich entschieden hat, ein alternativer Algorithmus , anscheinend ein Merge sort.

    
kmkaplan 21.11.2012 09:59
quelle

Tags und Links