快速排序的非递归我有了这个代码:与堆栈蟒蛇
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
我不知道哪里是错误的,我不能运行它,你能帮助我吗?谢谢。
你得到任何形式的错误消息?它应该做什么? – geoffspear
它订购数字没有递归和堆栈,但即时通讯新手在Python中,我不知道如何运行代码,如果我调用函数qs,它显示我一个错误:Traceback(最近调用最后): 文件“name of file.py”,line 42,in print quicksortNoRec(lista) NameError:name'lista'没有定义 –
user3241767
你怎么打电话给它?你需要给它一个列表进行排序try'print quickSortNoRec([5,10,20,1,2,3,55])' –