Python - Ayuda en Python

 
Vista:

Ayuda en Python

Publicado por Kratos (2 intervenciones) el 11/10/2021 16:55:43
Buenos días, tengo el siguiente algoritmo pero no se como hacerlo funcionar con una lista de números intente agregar un arreglo llamado A pero no funciono, quiero saber como echarlo a andar para así poder hacer algunas modificaciones en el código, el código no tiene errores si se ejecuta pero como no se donde tiene que ir la lista de los números no ordena nada. Espero me puedan ayudar.

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
import math
def hIzq(i):
    return 2*1+1
 
def hDer(i):
    return 2*1+2
 
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-1) and A[L]>A[i]):
        posMax=L
    else:
        posMax=i
    if (R<=(tamanoHeap-1) 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,1)
        tamanoHeap=tamanoHeap-1
        maxHeapify (A,0, tamanoHeap)
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
Imágen de perfil de Francisco Javier
Val: 249
Ha aumentado su posición en 29 puestos en Python (en relación al último mes)
Gráfica de Python

Ayuda en Python

Publicado por Francisco Javier (313 intervenciones) el 11/10/2021 19:48:47
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
40
41
42
43
44
45
46
47
48
import math
 
lista=[1,2,3,4,5,6,7]
tamanoHeap=3
def hIzq(i):
    return 2*1+1
 
def hDer(i):
    return 2*1+2
 
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-1) and A[L]>A[i]):
        posMax=L
    else:
        posMax=i
    if (R<=(tamanoHeap-1) 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,1)
        tamanoHeap=tamanoHeap-1
        maxHeapify (A,0, tamanoHeap)
for i in lista:
  print(i)
print(f'funcion hIzq->{hIzq(i)}\n')
print(f'funcion hDer->{hDer(i)}\n')
 
intercambia(lista,1,3)
print(f'funcion intercambia->{lista}')
 
maxHeapify(lista,i,tamanoHeap)
print(lista)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar