Python - ordenamiento

 
Vista:

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder