ordenamiento
Publicado por Crack (2 intervenciones) el 17/10/2021 00:05:19
En el siguiente algoritmo esta el método de ordenamiento heap sort el cual ordena en forma de montículo binario pero quiero imprimir en forma de ternas todos los sub árboles del montículo binario, es decir [Raíz, derecho, izquierdo]. Saben alguna manera para hacer esto posible, adjunto el código donde se da el ordenamiento con el método Heap Sort. Me harían un gran favor, gracias.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import math
def hIzq(i):
return 2*i
def hDer(i):
return 2*i+1
def intercambia(A,x,y):
tmp=A[x]
A[x]=A[y]
A[y]=tmp
def maxHeapify (A, i, tamanoHeap):
L=hIzq(i)
R=hDer(i)
if(L<=tamanoHeap and A[L]>A[i]):
posMax=L
else:
posMax=i
if (R<=tamanoHeap and A[R]>A[posMax]):
posMax=R
if (posMax != i):
intercambia(A, i, posMax)
maxHeapify (A, posMax, tamanoHeap)
def construirHeapMaxIni (A, tamanoHeap):
for i in range (math.ceil((tamanoHeap-1)/2),-1,-1):
maxHeapify (A, i, tamanoHeap)
def ordenacionHeapSort (A, tamanoHeap):
construirHeapMaxIni (A, tamanoHeap)
for i in range (len (A)-1,0,-1):
intercambia(A,0,i)
tamanoHeap=tamanoHeap-1
maxHeapify (A,0, tamanoHeap)
A = [4,100,68,90,6,9,10]
print(A)
ordenacionHeapSort (A, 6)
print(A)
Valora esta pregunta


0