我有这段代码:
class Pila () :
inferior=0
superior=0
lista = [8,5,6,4,3,2,10]
def quicksortNoRec (lista) :
"""Ordena la lista siguiendo el algoritmo quicksort
o de ordenacin rapida. Forma no recursiva"""
qs(lista,0,len(lista)-1)
return lista
def qs (lista,inicial,final) :
p=1
"declaramos la pila de estructuras"
pila=[20]
for m in range(0,20) :
pila=Pila()
"ahora se comienza a ordenar"
pila[p].inferior,pila[p].superior=inicial,final
while p :
inicial,final=pila[p].inferior,pila[p].superior
p-=1
izdo,dcho=inferior,superior
while inferior<dcho :
izdo,dcho=inferior,superior
mitad=lista[izdo+((dcho-izdo)/2)]
while izdo<=dcho :
while lista[izdo]<mitad and izdo<final : izdo+=1
while mitad<lista[dcho] and dcho>inicial : dcho-=1
if izdo<=dcho :
lista[izdo],lista[dcho]=lista[dcho],lista[izdo]
izdo+=1
dcho-=1
if izdo<final :
p+=1
pila[p].inferior,pila[p].superior=izdo,final
final=dcho
return lista
我不知道哪里出错了,我不能跑它,你能帮助我吗?感谢。
答案 0 :(得分:0)
class Pila () :
inferior=0
superior=0
lista = [8,5,6,4,3,2,10]
我认为你想要在这个类之外的lista定义
class Pila () :
inferior=0
superior=0
lista = [8,5,6,4,3,2,10]
但这只是你的一个问题...
另一个问题在这里
def qs (lista,inicial,final) :
p=1
"declaramos la pila de estructuras"
pila=[20]
for m in range(0,20) :
pila=Pila()
我很确定你想要
def qs (lista,inicial,final) :
p=1
"declaramos la pila de estructuras"
pila=[Pila() for m in range(0,20)]
然后我认为它至少会运行......不知道它是否会做你所说的