logo

Python-Programm für QuickSort

Einfach unwahrscheinlich Zusammenführen, sortieren , QuickSort ist ein Teilen-und-Herrsche-Algorithmus . Es wählt ein Element als Pivot aus und partitioniert das angegebene Array um den ausgewählten Pivot.

Es gibt viele verschiedene Versionen von QuickSort, die Pivot auf unterschiedliche Weise auswählen.

  1. Wählen Sie immer das erste Element als Drehpunkt
  2. Wählen Sie immer das letzte Element als Drehpunkt
  3. Wählen Sie ein zufälliges Element als Drehpunkt
  4. Wählen Sie den Median als Pivot

Hier wählen wir das letzte Element als Drehpunkt aus. Der Schlüsselprozess in QuickSort ist partition(). Das Ziel von Partitionen besteht darin, bei einem gegebenen Array und einem Element „x“ des Arrays als Drehpunkt x an der richtigen Position in einem sortierten Array zu platzieren, alle kleineren Elemente (kleiner als x) vor x zu platzieren und alle größeren Elemente (größer) zu platzieren als x) nach x. All dies sollte in linearer Zeit erfolgen.



Python Rekursiver QuickSort Funktion

// low -->Startindex, // hoch --> Endindex quickSort(arr[], low, high) { // Bis der Startindex kleiner ist als der Endindex, wenn (niedrig // pi der Partitionierungsindex ist, // arr[p] ist jetzt an der richtigen Stelle pi = partition(arr, low, high); // Vor pi quickSort(arr, low, pi - 1); // Nach pi quickSort(arr, pi + 1, high); 

Python3




d Flip-Flop

# Python program for implementation of Quicksort Sort> # This implementation utilizes pivot as the last element in the nums list> # It has a pointer to keep track of the elements smaller than the pivot> # At the very end of partition() function, the pointer is swapped with the pivot> # to come up with a 'sorted' nums relative to the pivot> # Function to find the partition position> def> partition(array, low, high):> ># choose the rightmost element as pivot> >pivot>=> array[high]> ># pointer for greater element> >i>=> low>-> 1> ># traverse through all elements> ># compare each element with pivot> >for> j>in> range>(low, high):> >if> array[j] <>=> pivot:> ># If element smaller than pivot is found> ># swap it with the greater element pointed by i> >i>=> i>+> 1> ># Swapping element at i with element at j> >(array[i], array[j])>=> (array[j], array[i])> ># Swap the pivot element with the greater element specified by i> >(array[i>+> 1>], array[high])>=> (array[high], array[i>+> 1>])> ># Return the position from where partition is done> >return> i>+> 1> # function to perform quicksort> def> quickSort(array, low, high):> >if> low # Find pivot element such that # element smaller than pivot are on the left # element greater than pivot are on the right pi = partition(array, low, high) # Recursive call on the left of pivot quickSort(array, low, pi - 1) # Recursive call on the right of pivot quickSort(array, pi + 1, high) data = [1, 7, 4, 1, 10, 9, -2] print('Unsorted Array') print(data) size = len(data) quickSort(data, 0, size - 1) print('Sorted Array in Ascending Order:') print(data)>

>

Ausgabe

Unsorted Array [1, 7, 4, 1, 10, 9, -2] Sorted Array in Ascending Order: [-2, 1, 1, 4, 7, 9, 10]>

Zeitkomplexität: Im schlimmsten Fall ist die Zeitkomplexität O(N).2) und die durchschnittliche Fallzeitkomplexität beträgt O(N log N)
Hilfsraum: O(1)

Python Quicksort verwenden Listenverständnis

Quicksort mit Listenverständnis ist ein rekursiver Algorithmus zum Sortieren eines Arrays von Elementen. Dabei wird ein Pivot-Element ausgewählt und das Array um den Pivot herum aufgeteilt, sodass alle Elemente, die kleiner als der Pivot sind, nach links und alle Elemente, die größer als der Pivot sind, nach rechts verschoben werden. Anschließend wird derselbe Prozess rekursiv auf die linken und rechten Unterarrays angewendet, bis das gesamte Array sortiert ist.

Algorithmus:

1.Wenn das Eingabearray die Länge 0 oder 1 hat, geben Sie das Array so zurück, wie es bereits sortiert ist.
2.Wählen Sie das erste Element des Arrays als Pivot-Element.
3.Erstellen Sie zwei leere Listen, links und rechts.
4.Für jedes Element im Array außer dem Pivot:
A. Wenn das Element kleiner als der Drehpunkt ist, fügen Sie es der linken Liste hinzu.
B. Wenn das Element größer oder gleich dem Pivot ist, fügen Sie es der rechten Liste hinzu.
5. Rufen Sie Quicksort rekursiv für die linke und rechte Liste auf.
6. Verketten Sie die sortierte linke Liste, das Pivot-Element und die sortierte rechte Liste.
7. Geben Sie die verkettete Liste zurück.

Python3




# Approach 2: Quicksort using list comprehension> def> quicksort(arr):> >if> len>(arr) <>=> 1>:> >return> arr> >else>:> >pivot>=> arr[>0>]> >left>=> [x>for> x>in> arr[>1>:]>if> x right = [x for x in arr[1:] if x>= Pivot] return Quicksort(left) + [Pivot] + Quicksort(Right) # Beispielverwendung arr = [1, 7, 4, 1, 10, 9, -2] sorted_arr = Quicksort(arr) print('Sorted Array in aufsteigender Reihenfolge:') print(sorted_arr)>

>

>

Ausgabe

Sorted Array in Ascending Order: [-2, 1, 1, 4, 7, 9, 10]>

Zeitkomplexität ist O(n log n)

Ankita Lokhande Alter

Die räumliche Komplexität des Algorithmus beträgt O(n)