2014-01-27 53 views
-3

快速排序的非递归我有了这个代码:与堆栈蟒蛇

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 

我不知道哪里是错误的,我不能运行它,你能帮助我吗?谢谢。

+3

你得到任何形式的错误消息?它应该做什么? – geoffspear

+0

它订购数字没有递归和堆栈,但即时通讯新手在Python中,我不知道如何运行代码,如果我调用函数qs,它显示我一个错误:Traceback(最近调用最后): 文件“name of file.py”,line 42,in print quicksortNoRec(lista) NameError:name'lista'没有定义 – user3241767

+0

你怎么打电话给它?你需要给它一个列表进行排序try'print quickSortNoRec([5,10,20,1,2,3,55])' –

回答

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)] 

那么我认为这至少会跑......不知道是否会做你expct什么虽然

+0

没有,它显示错误:回溯(最近呼叫最后): 文件“pythonpilas”,行37,在 print quicksortNoRec([5,10,20,1,2,3 ,55]) 文件 “pythonpilas”,第8行,在quicksortNoRec 适量(LISTA,0,LEN(LISTA)-1) 文件 “pythonpilas”,第20行,在适量 izdo,dcho =低劣,优越 NameError :全球名称'下'没有定义 – user3241767

+0

哦......嗯,我不知道这些值应该是什么......这段代码真的是越野车......你从哪里得到它?为什么不从头开始......或者用伪代码写出来然后把它翻译成python –

+0

我不知道如何做一个非递归的堆栈与Python的快速排序... – user3241767