快速排序与Python实现
python实现代码:

class Fast_rank:
    def __init__(self):
        from queue import Queue
        self.qu=Queue()
    def split(self,data_list,i,length):
        left=list(filter(lambda x:x<data_list[i],data_list[i+1:i+length]))
        right=list(filter(lambda x:x>=data_list[i],data_list[i+1:i+length]))
        self.qu.put((i,len(left)))
        self.qu.task_done()
        self.qu.put((i+len(left)+1,len(right)))
        self.qu.task_done()
        data_list[i:i+length]=left+[data_list[i]]+right
    def rank(self,data_list):
        i=0
        length=len(data_list)
        self.qu.put((i,length))
        while not self.qu.empty():
            i,length=self.qu.get()
            if length>1:
                self.split(data_list,i,length)
        return data_list

更简洁的方式:

def quicksort(data_list,i,length):
    if length<=1:
        return
    left = list(filter(lambda x: x < data_list[i], data_list[i + 1:i + length]))
    right = list(filter(lambda x: x >= data_list[i], data_list[i + 1:i + length]))
    data_list[i:i+length]=left + [data_list[i]] + right
    quicksort(data_list,i,len(left))
    quicksort(data_list,i+len(left)+1,len(right))

相关文章: