Python-Code für die Zeit Komplexitätsdiagramm der Heap-Sortierung
Voraussetzung: HeapSort Die
Heap-Sortierung ist eine vergleichsbasierte Sortiertechnik, die auf der B inary Heap- Datenstruktur basiert . Es ähnelt der Auswahlsortierung, bei der wir zuerst das maximale Element finden und das maximale Element am Ende platzieren. Wir wiederholen den gleichen Vorgang für das verbleibende Element.
Wir implementieren hier die Heap-Sortierung, rufen sie für Zufallslisten unterschiedlicher Größe auf, messen die für verschiedene Größen benötigte Zeit und erstellen ein Diagramm der Eingabegröße gegen die benötigte Zeit.
import
time
from
numpy.random
import
seed
from
numpy.random
import
randint
import
matplotlib.pyplot as plt
def
left(i):
return
2
*
i
+
1
def
right(i):
return
2
*
i
+
2
def
heapSize(A):
return
len
(A)
-
1
def
MaxHeapify(A, i):
l
=
left(i)
r
=
right(i)
if
l<
=
heapSize(A)
and
A[l] > A[i] :
largest
=
l
else
:
largest
=
i
if
r<
=
heapSize(A)
and
A[r] > A[largest]:
largest
=
r
if
largest !
=
i:
A[i], A[largest]
=
A[largest], A[i]
MaxHeapify(A, largest)
def
BuildMaxHeap(A):
for
i
in
range
(
int
(heapSize(A)
/
2
)
-
1
,
-
1
,
-
1
):
MaxHeapify(A, i)
def
HeapSort(A):
BuildMaxHeap(A)
B
=
list
()
heapSize1
=
heapSize(A)
for
i
in
range
(heapSize(A),
0
,
-
1
):
A[
0
], A[i]
=
A[i], A[
0
]
B.append(A[heapSize1])
A
=
A[:
-
1
]
heapSize1
=
heapSize1
-
1
MaxHeapify(A,
0
)
elements
=
list
()
times
=
list
()
for
i
in
range
(
1
,
10
):
a
=
randint(
0
,
1000
*
i,
1000
*
i)
start
=
time.clock()
HeapSort(a)
end
=
time.clock()
(
len
(a),
"Elements Sorted by HeapSort in "
, end
-
start)
elements.append(
len
(a))
times.append(end
-
start)
plt.xlabel(
'List Length'
)
plt.ylabel(
'Time Complexity'
)
plt.plot(elements, times, label
=
'Heap Sort'
)
plt.grid()
plt.legend()
plt.show()
Ausgabe :
Eingabe: Unsortierte Listen unterschiedlicher Größe werden zufällig generiert Ausgabe : 1000 Elemente sortiert nach HeapSort in 0.023797415087301488 2000 Elemente, sortiert nach HeapSort in 0.053856713614550245 3000 Elemente, sortiert nach HeapSort in 0.08474737185133563 4000 Elemente, sortiert nach HeapSort in 0.13578669978414837 5000 Elemente, sortiert nach HeapSort in 0.1658182863213824 6000 Elemente sortiert nach HeapSort in 0.1875901601906662 7000 von HeapSort in 0.21982946862249264 sortierte Elemente 8000 Elemente, sortiert nach HeapSort in 0.2724293921580738 9000 Elemente sortiert nach HeapSort in 0.30996323029421546 Das Komplexitätsdiagramm für die Heap-Sortierung ist unten angegeben